C/암호학4 Transposition Cipher[C] 1. 전치암호 : 평문 문자의 순서를 어떤 특별한 절차에 따라 문자 위치를 재배치하여 평문을 암호화하는 방식 => 가장 단순한 전치 암호 : 정상적인 평문 배열을 특정한 키의 순서에 따라 재배치하여 암호화 cf> 대치암호(substitution) : 문자를 다른 문자로 전치암호(transposition) : 문자의 위치를 변경 1.1 단순 전치 암호 (1) 동작방식 평문 문장을 키의 길이에 따라 일정 간격으로 나눈다 일정 간격으로 나눈 문자를 키의 재배열 순서에 따라 재배치 (이때, 마지막 간격의 문자가 부족하면 임의의 문자 덧붙임) 1) 구현 : 필자는 키의 크기가 문장의 길이의 약수라고 전제로 하여 코드를 작성 : 랜덤 key table을 생성하기 위해 check 배열을 따로 생성하여 서로 다른 난수.. 2023. 9. 4. Vigenere Cipher[C] 1. Vigenere Cipher(비제네르 암호) : 다중 대치 암호의 대표적인 암호 1-1. 단일문자대치암호 vs 다중대치암호 단일문자대치암호(ex. 카이사르암호) : 하나의 평문 문자 -> 동일한 하나의 암호 문자 다중대치암호(ex. 비제네르암호) : 하나의 평문 문자 -> 여러 개의 암호 문자 1-2. 다중대치암호 방식 : 대치표를 2회 이상 적용 : 대치 표 개수가 d라면 주기 d를 갖는다 => d=8, 비밀키 수열= "security" : 평문을 길이 8씩 분할하여 비밀키의 문자와 mod26 연산을 통해 암호문을 생성 1-2-1. 비밀키의 차이 카이사르 암호 : key = 1(숫자) -> abcd의 암호화 결과 : bcde 비제네르 암호 : key = ab(문자열) -> abcd의 암호화 결과 .. 2023. 9. 1. Caesar Cipher[C] 1. 카이사르 암호 : 고전 암호 알고리즘으로 평문 문자를 다른 문자로 일대일 대응시켜 암호문을 만들어내는 방식 : 모듈 이용 : Brute-Froce 알고리즘에는 취약함 1.1 카이사르 암호 알고리즘 구현 1) 고려해야하는 점 (암호화) 키를 적용했을 때 범위를 벗어나는 것(모듈러 값을 초과)을 방지하기위해 순환시킨다 (복호화) 키를 적용했을 때 범위를 벗어나는 경우(음수가 되는 경우) 26을 더해준다 -> 이때 mod26을 하는 건 어떤 숫자를 0~25의 범위의 숫자로 만드는 과정이기에 (26이상의 자연수)-26을 하는 것이라 생각할 수 있다(물론, 26보다 한참 큰 숫자는 -26한 결과와 %26한 결과는 다르다) -> 그렇다면 음수가 되어 범위를 벗어나는 경우엔 (0미만의 정수)+26을 하여 0~2.. 2023. 9. 1. EED(Extend Euclid Algorithm)[c] 1. 확장 유클리드 알고리즘 ∀a,b ∈Z, If gcd(a,b)=d, then ∃x,y ∈Z s.t ax+by=d : 유클리드 알고리즘을 이용해 두 수의 최대공약수를 구하는 거라면 확장 유클리드 알고리즘은 거꾸로 수행하며 x,y를 찾는 과정이라고 할 수 있다 : 이 점을 이용하여 두 개의 정수가 서로소, 즉 gcd의 값이 1일 땐 하나의 수에 대한 다른 수의 곱셈에 대한 역원을 계산할 수 있다 : gcd(a,n)=1 (a 단항식의 해를 구하는 과정은 n을 법으로 하는 a의 곱셈의 역원을 구하는 것과 동일해진다 (1) EED 동작 : ∀a,b ∈Z(a≥b), sxa + txb = gcd(a,b) 만족하는 gcd와 s,t 값 도출 이때 a= b*q+r (division algorithm) 1) Divisi.. 2023. 9. 1. 이전 1 다음