프로그래밍/python
무차별 대입 공격 (카이사르 암호 해독)
공부하는 뚱이
2025. 2. 24. 12:50
반응형
def makeDisk(k):
dec_disk = {}
for i in range(26): # 범위를 26으로 수정
alp = (i + k) % 26 + 65
dec_disk[chr(alp)] = chr(i + 65)
return dec_disk
def caesar(msg, key):
ret = ''
msg = msg.upper()
disk = makeDisk(key)
for c in msg:
if c in disk:
ret += disk[c]
else:
ret += c
return ret
def attack(msg):
for key in range(1, 26):
decmsg = caesar(msg, key)
print('SHIFT[%d]: %s' % (key, decmsg))
if __name__ == '__main__':
msg = 'UGAMKZMBSMGQAVCUJMZBPZMMNQDMWVMBPZMM'
attack(msg)
SHIFT[1]: TFZLJYLARLFPZUBTILYAOYLLMPCLVULAOYLL
SHIFT[2]: SEYKIXKZQKEOYTASHKXZNXKKLOBKUTKZNXKK
SHIFT[3]: RDXJHWJYPJDNXSZRGJWYMWJJKNAJTSJYMWJJ
SHIFT[4]: QCWIGVIXOICMWRYQFIVXLVIIJMZISRIXLVII
SHIFT[5]: PBVHFUHWNHBLVQXPEHUWKUHHILYHRQHWKUHH
SHIFT[6]: OAUGETGVMGAKUPWODGTVJTGGHKXGQPGVJTGG
SHIFT[7]: NZTFDSFULFZJTOVNCFSUISFFGJWFPOFUISFF
SHIFT[8]: MYSECRETKEYISNUMBERTHREEFIVEONETHREE
SHIFT[9]: LXRDBQDSJDXHRMTLADQSGQDDEHUDNMDSGQDD
SHIFT[10]: KWQCAPCRICWGQLSKZCPRFPCCDGTCMLCRFPCC
SHIFT[11]: JVPBZOBQHBVFPKRJYBOQEOBBCFSBLKBQEOBB
SHIFT[12]: IUOAYNAPGAUEOJQIXANPDNAABERAKJAPDNAA
SHIFT[13]: HTNZXMZOFZTDNIPHWZMOCMZZADQZJIZOCMZZ
SHIFT[14]: GSMYWLYNEYSCMHOGVYLNBLYYZCPYIHYNBLYY
SHIFT[15]: FRLXVKXMDXRBLGNFUXKMAKXXYBOXHGXMAKXX
SHIFT[16]: EQKWUJWLCWQAKFMETWJLZJWWXANWGFWLZJWW
SHIFT[17]: DPJVTIVKBVPZJELDSVIKYIVVWZMVFEVKYIVV
SHIFT[18]: COIUSHUJAUOYIDKCRUHJXHUUVYLUEDUJXHUU
SHIFT[19]: BNHTRGTIZTNXHCJBQTGIWGTTUXKTDCTIWGTT
SHIFT[20]: AMGSQFSHYSMWGBIAPSFHVFSSTWJSCBSHVFSS
SHIFT[21]: ZLFRPERGXRLVFAHZOREGUERRSVIRBARGUERR
SHIFT[22]: YKEQODQFWQKUEZGYNQDFTDQQRUHQAZQFTDQQ
SHIFT[23]: XJDPNCPEVPJTDYFXMPCESCPPQTGPZYPESCPP
SHIFT[24]: WICOMBODUOISCXEWLOBDRBOOPSFOYXODRBOO
SHIFT[25]: VHBNLANCTNHRBWDVKNACQANNORENXWNCQANN
SHIFT[2]: SEYKIXKZQKEOYTASHKXZNXKKLOBKUTKZNXKK
SHIFT[3]: RDXJHWJYPJDNXSZRGJWYMWJJKNAJTSJYMWJJ
SHIFT[4]: QCWIGVIXOICMWRYQFIVXLVIIJMZISRIXLVII
SHIFT[5]: PBVHFUHWNHBLVQXPEHUWKUHHILYHRQHWKUHH
SHIFT[6]: OAUGETGVMGAKUPWODGTVJTGGHKXGQPGVJTGG
SHIFT[7]: NZTFDSFULFZJTOVNCFSUISFFGJWFPOFUISFF
SHIFT[8]: MYSECRETKEYISNUMBERTHREEFIVEONETHREE
SHIFT[9]: LXRDBQDSJDXHRMTLADQSGQDDEHUDNMDSGQDD
SHIFT[10]: KWQCAPCRICWGQLSKZCPRFPCCDGTCMLCRFPCC
SHIFT[11]: JVPBZOBQHBVFPKRJYBOQEOBBCFSBLKBQEOBB
SHIFT[12]: IUOAYNAPGAUEOJQIXANPDNAABERAKJAPDNAA
SHIFT[13]: HTNZXMZOFZTDNIPHWZMOCMZZADQZJIZOCMZZ
SHIFT[14]: GSMYWLYNEYSCMHOGVYLNBLYYZCPYIHYNBLYY
SHIFT[15]: FRLXVKXMDXRBLGNFUXKMAKXXYBOXHGXMAKXX
SHIFT[16]: EQKWUJWLCWQAKFMETWJLZJWWXANWGFWLZJWW
SHIFT[17]: DPJVTIVKBVPZJELDSVIKYIVVWZMVFEVKYIVV
SHIFT[18]: COIUSHUJAUOYIDKCRUHJXHUUVYLUEDUJXHUU
SHIFT[19]: BNHTRGTIZTNXHCJBQTGIWGTTUXKTDCTIWGTT
SHIFT[20]: AMGSQFSHYSMWGBIAPSFHVFSSTWJSCBSHVFSS
SHIFT[21]: ZLFRPERGXRLVFAHZOREGUERRSVIRBARGUERR
SHIFT[22]: YKEQODQFWQKUEZGYNQDFTDQQRUHQAZQFTDQQ
SHIFT[23]: XJDPNCPEVPJTDYFXMPCESCPPQTGPZYPESCPP
SHIFT[24]: WICOMBODUOISCXEWLOBDRBOOPSFOYXODRBOO
SHIFT[25]: VHBNLANCTNHRBWDVKNACQANNORENXWNCQANN
SHIFT[8]번을 보면 secret key를 알 수 있다!
반응형