2020. 1. 31. 18:11ㆍ카테고리 없음
def caesar_cipher(msg, encdec, keys):
symbols = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890 !?.'
results = ''
for i in msg:
if encdec == 'encrypt':
sum = (symbols.index(i) + 13) % len(symbols)
results += symbols[sum]
elif encdec == 'decrypt':
sum = (symbols.index(i) - 13) % len(symbols)
results += symbols[sum]
return results
msgs = 'This is my secret plaintext.'
key = 13
encrypt_messages = caesar_cipher(msgs, 'encrypt', key)
decrypt_messages = caesar_cipher(encrypt_messages, 'decrypt', key)
print("key = %s : cleartext Message: |%s|" % (key, msgs))
print("key = %s : Encrypt Message : |%s|" % (key, encrypt_messages))
print("key = %s : Decrypt Message : |%s|" % (key, decrypt_messages))
///////////////////////////////////////////////////////////////////////////////////////////
(정리)
시저(caesar Cipher) 암호 ---> 아핀 암호(Affine Cipher)
* C = E(P + K) mod 26 * C = E(P * K1 + K2) mod 26
단일 전치 암호 --> 다중 전치 암호 (etao)
* 비즈니어(Vegenre Cipher)
/////////////////////////////////////////////////////////////////////////////////////////
messages = 'Common sense is not so common.'
key = 8
encrypted = [''] * key
for num, char in enumerate(messages):
# print(num, char)
list_index = num % 8
# print(num, char, list_index)
encrypted[list_index] += char
# print(encrypted) ; input()
encrypted_msg = ''.join(encrypted)
print('plaintext = |%s|' % messages)
print('ciphertext = |%s|' %encrypted_msg)
////////////////////////////////////////////////////////////////////////////////
messages = 'Common sense is not so common.'
key = 8
def transposition_cipher():
encrypted = [''] * key
for num, char in enumerate(messages):
# print(num, char)
list_index = num % 8
# print(num, char, list_index)
encrypted[list_index] += char
# print(encrypted) ; input()
return ''.join(encrypted)
def main():
encrypted_msg = transposition_cipher()
print('plaintext = |%s|' % messages)
print('ciphertext = |%s|' % encrypted_msg)
if __name__ == '__main__':
main()
///////////////////////////////////////////////////////