일회용 암호는 평문을 각 문자당 2진수 16비트 아스키코드(이유: 한글은 16비트)에 해당하는 숫자로 변환한다. 그리고 비밀키는 각 문자당 아스키코드에 해당하는 2진수로 변환한다. 이 때 2진수 비트는 한글은 16비트, 그 외는 8비트 이하로 일정하지 않다. 2진수로 변환한 평문과 비밀키를 Stream암호로 변환한 것이 일회용암호이다. 비밀키의 길이가 평문보다 작으면 비밀키를 반복해서 암호화를 하도록 프로그램을 만들었다. 복호화는 암호문에 비밀키를 배타합(XOR연산)하여 구하면 된다.
컴퓨터 자판의 아스키코드는 다음과 같다. 단, space=32
[앞으로 이것의 이름은 자료 1 입니다.]
[자료1]
! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < =
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
> ?
62 63
@ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ ]
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
^ _
94 95
` a b c d e f g h i j k l m n o p q r s t u
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
v w x y z { | } ~
118 119 120 121 122 123 124 125 126
[/1자료]
-주의
[1자료] 는 시작
[/1자료] 는 끝 입니다.
일회용(One-time pad) 암호
평문(한글 가능)
I'm Negi Point : 12830
암호키
I'm Negi
2진수 암호키(아스키코드를 2진수로 변환하여 이은것)
100100110011111011011000001001110110010111001111101001 (54비트)
I => 73(10진수) => 1001001 (7비트)
' => 39(10진수) => 100111 (6비트)
m => 109(10진수) => 1101101 (7비트)
=> 32(10진수) => 100000 (6비트)
N => 78(10진수) => 1001110 (7비트)
e => 101(10진수) => 1100101 (7비트)
g => 103(10진수) => 1100111 (7비트)
i => 105(10진수) => 1101001 (7비트)
2진수 평문(아스키코드를 16비트 2진수로 변환하여 이은것)
0000000001001001000000000010011100000000011011010000000000100000000000000100111000000000011001010000000001100111000000000110100100000000001000000000000001010000000000000110111100000000011010010000000001101110000000000111010000000000001000000000000000111010000000000010000000000000001100010000000000110010000000000011100000000000001100110000000000110000 (352비트)
평문을 암호키의 길이 만큼씩 나누어 암호키를 더한 2진수 암호문
평 문 = 000000000100100100000000001001110000000001101101000000
암호키 = 100100110011111011011000001001110110010111001111101001
암호문 = 100100110111011111011000000000000110010110100010101001
평 문 = 000010000000000000010011100000000001100101000000000110
암호키 = 100100110011111011011000001001110110010111001111101001
암호문 = 100110110011111011001011101001110111110010001111101111
평 문 = 011100000000011010010000000000100000000000000101000000
암호키 = 100100110011111011011000001001110110010111001111101001
암호문 = 111000110011100001001000001001010110010111001010101001
평 문 = 000000011011110000000001101001000000000110111000000000
암호키 = 100100110011111011011000001001110110010111001111101001
암호문 = 100100101000001011011001100000110110010001110111101001
평 문 = 011101000000000000100000000000000011101000000000001000
암호키 = 100100110011111011011000001001110110010111001111101001
암호문 = 111001110011111011111000001001110101111111001111100001
평 문 = 000000000000110001000000000011001000000000001110000000
암호키 = 100100110011111011011000001001110110010111001111101001
암호문 = 100100110011001010011000001010111110010111000001101001
평 문 = 0000001100110000000000110000
암호키 = 1001001100111110110110000010
암호문 = 1001000000001110110110110010
2진수 암호문(2진수 평문에 2진수 암호키를 더한 것)
000010010101100101110010101010011001001010000010110110011000001101100100011101111010011110011100111110111110000010011101011111110011111000011001001100110010100110000010101111100101110000011010011001000000001110110110110010
16진수 암호문(2진수 암호문을 16진수로 변환한 것)
9377d80065a2a66cfb2e9df23efe338482565caa64a0b660d91de9e73ef8275fcf864cca60af97069900edb2
왼쪽칸 아래에 있는 전체 16진수 암호문
9377d80065a2a66cfb2e9df23efe338482565caa64a0b660d91de9e73ef8275fcf864cca60af97069900edb2
복호키
I'm Negi
2진수 복호키(아스키코드를 2진수로 변환하여 이은것)
100100110011111011011000001001110110010111001111101001 (54비트)
I => 73(10진수) => 1001001 (7비트)
' => 39(10진수) => 100111 (6비트)
m => 109(10진수) => 1101101 (7비트)
=> 32(10진수) => 100000 (6비트)
N => 78(10진수) => 1001110 (7비트)
e => 101(10진수) => 1100101 (7비트)
g => 103(10진수) => 1100111 (7비트)
i => 105(10진수) => 1101001 (7비트)
2진수 암호문(16진수를 2진수로 변환하여 이은것)
1001001101110111110110000000000001100101101000101010011001101100111110110010111010011101111100100011111011111110001100111000010010000010010101100101110010101010011001001010000010110110011000001101100100011101111010011110011100111110111110000010011101011111110011111000011001001100110010100110000010101111100101110000011010011001000000001110110110110010 (352비트)
암호문을 복호키의 길이 만큼씩 나누어 복호키를 더한 2진수 복호문
암호문 = 111000110011100001001000001001010110010111001010101001
복호키 = 100100110011111011011000001001110110010111001111101001
복호문 = 011100000000011010010000000000100000000000000101000000
암호문 = 100100101000001011011001100000110110010001110111101001
복호키 = 100100110011111011011000001001110110010111001111101001
복호문 = 000000011011110000000001101001000000000110111000000000
암호문 = 111001110011111011111000001001110101111111001111100001
복호키 = 100100110011111011011000001001110110010111001111101001
복호문 = 011101000000000000100000000000000011101000000000001000
암호문 = 100100110011001010011000001010111110010111000001101001
복호키 = 100100110011111011011000001001110110010111001111101001
복호문 = 000000000000110001000000000011001000000000001110000000
암호문 = 1001000000001110110110110010
복호키 = 1001001100111110110110000010
복호문 = 0000001100110000000000110000
2진수 복호문(2진수 암호문에 2진수 복호키를 더한 것)
0000000001001001000000000010011100000000011011010000000000100000000000000100111000000000011001010000000001100111000000000110100100000000001000000000000001010000000000000110111100000000011010010000000001101110000000000111010000000000001000000000000000111010000000000010000000000000001100010000000000110010000000000011100000000000001100110000000000110000
복호문(2진수 복호문을 아스키코드로 복호화한 것)
I'm Negi Point : 12830
-뭐.. 공격으로 할떈 I'm Negi 이것은 해독이 안됩니다. 하지만 이것은 암호를 주고 그 암호를
복호키를 사용하여 한 것이기 떄문입니다. 복호키가 다를시
I'm耑䭠噬爅匙ᕪ앜ꖛ頙殑戊䂄쭪꼙黟狞
이렇게 뜨고 암호가 제대로 안나옵니다-
-이 암호에 관하여 질문은 받지 않겠습니다.
컴퓨터 자판의 아스키코드는 다음과 같다. 단, space=32
[앞으로 이것의 이름은 자료 1 입니다.]
[자료1]
! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < =
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
> ?
62 63
@ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ ]
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
^ _
94 95
` a b c d e f g h i j k l m n o p q r s t u
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
v w x y z { | } ~
118 119 120 121 122 123 124 125 126
[/1자료]
-주의
[1자료] 는 시작
[/1자료] 는 끝 입니다.
일회용(One-time pad) 암호
평문(한글 가능)
I'm Negi Point : 12830
암호키
I'm Negi
2진수 암호키(아스키코드를 2진수로 변환하여 이은것)
100100110011111011011000001001110110010111001111101001 (54비트)
I => 73(10진수) => 1001001 (7비트)
' => 39(10진수) => 100111 (6비트)
m => 109(10진수) => 1101101 (7비트)
=> 32(10진수) => 100000 (6비트)
N => 78(10진수) => 1001110 (7비트)
e => 101(10진수) => 1100101 (7비트)
g => 103(10진수) => 1100111 (7비트)
i => 105(10진수) => 1101001 (7비트)
2진수 평문(아스키코드를 16비트 2진수로 변환하여 이은것)
0000000001001001000000000010011100000000011011010000000000100000000000000100111000000000011001010000000001100111000000000110100100000000001000000000000001010000000000000110111100000000011010010000000001101110000000000111010000000000001000000000000000111010000000000010000000000000001100010000000000110010000000000011100000000000001100110000000000110000 (352비트)
평문을 암호키의 길이 만큼씩 나누어 암호키를 더한 2진수 암호문
평 문 = 000000000100100100000000001001110000000001101101000000
암호키 = 100100110011111011011000001001110110010111001111101001
암호문 = 100100110111011111011000000000000110010110100010101001
평 문 = 000010000000000000010011100000000001100101000000000110
암호키 = 100100110011111011011000001001110110010111001111101001
암호문 = 100110110011111011001011101001110111110010001111101111
평 문 = 011100000000011010010000000000100000000000000101000000
암호키 = 100100110011111011011000001001110110010111001111101001
암호문 = 111000110011100001001000001001010110010111001010101001
평 문 = 000000011011110000000001101001000000000110111000000000
암호키 = 100100110011111011011000001001110110010111001111101001
암호문 = 100100101000001011011001100000110110010001110111101001
평 문 = 011101000000000000100000000000000011101000000000001000
암호키 = 100100110011111011011000001001110110010111001111101001
암호문 = 111001110011111011111000001001110101111111001111100001
평 문 = 000000000000110001000000000011001000000000001110000000
암호키 = 100100110011111011011000001001110110010111001111101001
암호문 = 100100110011001010011000001010111110010111000001101001
평 문 = 0000001100110000000000110000
암호키 = 1001001100111110110110000010
암호문 = 1001000000001110110110110010
2진수 암호문(2진수 평문에 2진수 암호키를 더한 것)
000010010101100101110010101010011001001010000010110110011000001101100100011101111010011110011100111110111110000010011101011111110011111000011001001100110010100110000010101111100101110000011010011001000000001110110110110010
16진수 암호문(2진수 암호문을 16진수로 변환한 것)
9377d80065a2a66cfb2e9df23efe338482565caa64a0b660d91de9e73ef8275fcf864cca60af97069900edb2
왼쪽칸 아래에 있는 전체 16진수 암호문
9377d80065a2a66cfb2e9df23efe338482565caa64a0b660d91de9e73ef8275fcf864cca60af97069900edb2
복호키
I'm Negi
2진수 복호키(아스키코드를 2진수로 변환하여 이은것)
100100110011111011011000001001110110010111001111101001 (54비트)
I => 73(10진수) => 1001001 (7비트)
' => 39(10진수) => 100111 (6비트)
m => 109(10진수) => 1101101 (7비트)
=> 32(10진수) => 100000 (6비트)
N => 78(10진수) => 1001110 (7비트)
e => 101(10진수) => 1100101 (7비트)
g => 103(10진수) => 1100111 (7비트)
i => 105(10진수) => 1101001 (7비트)
2진수 암호문(16진수를 2진수로 변환하여 이은것)
1001001101110111110110000000000001100101101000101010011001101100111110110010111010011101111100100011111011111110001100111000010010000010010101100101110010101010011001001010000010110110011000001101100100011101111010011110011100111110111110000010011101011111110011111000011001001100110010100110000010101111100101110000011010011001000000001110110110110010 (352비트)
암호문을 복호키의 길이 만큼씩 나누어 복호키를 더한 2진수 복호문
암호문 = 111000110011100001001000001001010110010111001010101001
복호키 = 100100110011111011011000001001110110010111001111101001
복호문 = 011100000000011010010000000000100000000000000101000000
암호문 = 100100101000001011011001100000110110010001110111101001
복호키 = 100100110011111011011000001001110110010111001111101001
복호문 = 000000011011110000000001101001000000000110111000000000
암호문 = 111001110011111011111000001001110101111111001111100001
복호키 = 100100110011111011011000001001110110010111001111101001
복호문 = 011101000000000000100000000000000011101000000000001000
암호문 = 100100110011001010011000001010111110010111000001101001
복호키 = 100100110011111011011000001001110110010111001111101001
복호문 = 000000000000110001000000000011001000000000001110000000
암호문 = 1001000000001110110110110010
복호키 = 1001001100111110110110000010
복호문 = 0000001100110000000000110000
2진수 복호문(2진수 암호문에 2진수 복호키를 더한 것)
0000000001001001000000000010011100000000011011010000000000100000000000000100111000000000011001010000000001100111000000000110100100000000001000000000000001010000000000000110111100000000011010010000000001101110000000000111010000000000001000000000000000111010000000000010000000000000001100010000000000110010000000000011100000000000001100110000000000110000
복호문(2진수 복호문을 아스키코드로 복호화한 것)
I'm Negi Point : 12830
-뭐.. 공격으로 할떈 I'm Negi 이것은 해독이 안됩니다. 하지만 이것은 암호를 주고 그 암호를
복호키를 사용하여 한 것이기 떄문입니다. 복호키가 다를시
I'm耑䭠噬爅匙ᕪ앜ꖛ頙殑戊䂄쭪꼙黟狞
이렇게 뜨고 암호가 제대로 안나옵니다-
-이 암호에 관하여 질문은 받지 않겠습니다.