이 튜토리얼에서는 Caesar Cipher라는 암호화 방법 중 하나를 살펴보겠습니다. 암호화의 일부입니다.
소개
이 기술에서는 각 문자가 알파벳 뒤 또는 앞의 특정 고정 숫자 위치의 문자로 대체됩니다. 예를 들어, 알파벳 B는 D 아래 두 자리로 대체됩니다. D는 F가 됩니다. 이 방법은 관료들과 소통하기 위해 이 방법을 사용한 유명한 마찰 캐릭터 Julius Caesar의 이름을 따서 명명되었습니다.
이를 구현하는 데 사용되는 알고리즘이 있습니다. 다음을 이해합시다.
카이사르 암호 알고리즘의 특징
이 알고리즘은 아래에 주어진 몇 가지 기능으로 구성됩니다.
- 이 기술은 암호화를 적용하는 것이 매우 간단합니다.
- 각 텍스트는 알파벳으로 아래 또는 위로 고정된 수의 위치로 대체됩니다.
- 간단한 유형의 대체 암호입니다.
아래로 이동된 텍스트의 각 후자를 정의하는 데 필요한 정수 값이 있습니다. 이 정수 값을 시프트라고도 합니다.
문자열을 배열로 변환 java
A = 0, B = 1, C = 2, D = 3…
다음 수학 공식을 사용하여 n 글자를 이동할 수 있습니다.
암호를 해독하는 방법?
복호화는 암호화와 동일합니다. 원본 텍스트를 해독하기 위해 반대 경로로 이동하는 기능을 만들 수 있습니다. 그러나 모듈 아래에서 암호의 순환 속성을 사용할 수 있습니다.
암호(n) = 해독(26-n)
복호화에도 동일한 기능을 사용할 수 있습니다. 대신에 Shifts =가 되도록 Shift 값을 수정하겠습니다. 26 - 교대.
.net 튜토리얼
다음 예를 이해해 봅시다 -
예 -
def encypt_func(txt, s): result = '' # transverse the plain txt for i in range(len(txt)): char = txt[i] # encypt_func uppercase characters in plain txt if (char.isupper()): result += chr((ord(char) + s - 64) % 26 + 65) # encypt_func lowercase characters in plain txt else: result += chr((ord(char) + s - 96) % 26 + 97) return result # check the above function txt = 'CEASER CIPHER EXAMPLE' s = 4 print('Plain txt : ' + txt) print('Shift pattern : ' + str(s)) print('Cipher: ' + encypt_func(txt, s))
산출:
내 모니터 크기
Plain txt : CEASER CIPHER EXAMPLE Shift pattern : 4 Cipher: HJFXJWsHNUMJWsJCFRUQJ
위의 코드는 한 번에 한 번씩 문자를 순회했습니다. 텍스트의 암호화 및 복호화 절차에 따라 규칙에 따라 각 문자를 전송했습니다.
우리는 암호문을 생성하는 몇 가지 특정 위치 집합을 정의했습니다.
Caesar 암호 알고리즘 위반
우리는 다양한 방법으로 암호문을 해킹할 수 있습니다. 방법 중 하나는 무차별 대입 기술, 여기에는 가능한 모든 암호 해독 키를 시도하는 작업이 포함됩니다. 이 기술은 그리 어렵지도 않고 많은 노력이 필요하지도 않습니다.
다음 예를 이해해 봅시다.
예 -
msg = 'rGMTLIVrHIQSGIEWIVGIEWIV' #encrypted msg LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' for k in range(len(LETTERS)): transformation = '' for s in msg: if s in LETTERS: n = LETTERS.find(s) n = n - k if n <0: n="n" + len(letters) transformation="transformation" letters[n] else: s print('hacking k #%s: %s' % (k, transformation)) < pre> <p> <strong>Output:</strong> </p> <pre> Hacking k #25: rHNUMJWrIJRTHJFXJWHJFXJW </pre> <h2>Transposition Cipher</h2> <p>Transposition cipher algorithm is a technique where the alphabet order in the plaintext is rearranged to form a cipher text. This algorithm doesn't support the actual plain text alphabets.</p> <p>Let's understand this algorithm using an example.</p> <p> <strong>Example -</strong> </p> <p>We will take the simple example called columnar transposition cipher where we write the each character in the pain text in horizontal with specified alphabet width. The vertically written texts are cipher, which create a completely unlike cipher text.</p> <p>Let's take a plain text, and apply the simple columnar transposition technique as shown below.</p> <img src="//techcodeview.com/img/python-tutorial/89/caesar-cipher-python-2.webp" alt="Caesar Cipher in Python"> <p>We placed the plain text horizontally and the cipher text is created with vertical format as: <strong>hotnejpt.lao.lvi.</strong> To decrypt this, the receiver must use the same table to decrypt the cipher text to plain text.</p> <p> <strong>Code -</strong> </p> <p>Let's understand the following example.</p> <pre> def split_len(sequence, length): return [sequence[i:i + length] for i in range(0, len(sequence), length)] def encode(k, plaintxt): order = { int(val): n for n, val in enumerate(k) } ciphertext = '' for index in sorted(order.ks()): for part in split_len(plaintxt, len(k)): try:ciphertext += part[order[index]] except IndexError: continue return ciphertext print(encode('3214', 'HELLO')) </pre> <p> <strong>Explanation -</strong> </p> <p>In the above code, we have created a function named <strong>split_len(),</strong> which spitted the pain text character, placed in columnar or row format.</p> <p>The <strong>encode()</strong> method created the cipher text with a key specifying the number of columns, and we have printed each cipher text by reading through each column.</p> <h4>Note - The transposition technique is meant to be a significant improvement in crypto security. Cryptanalyst observed that re-encrypting the cipher text using same transposition cipher shows better security.</h4> <hr></0:>
전치암호
전치암호알고리즘은 평문의 알파벳 순서를 재배열하여 암호문을 형성하는 기술이다. 이 알고리즘은 실제 일반 텍스트 알파벳을 지원하지 않습니다.
tkinter 프레임
예제를 사용하여 이 알고리즘을 이해해 보겠습니다.
예 -
페인 텍스트의 각 문자를 지정된 알파벳 너비로 가로로 쓰는 열형 전치 암호라는 간단한 예를 들어보겠습니다. 세로로 쓰여진 텍스트는 암호문이며, 이는 완전히 다른 암호문을 생성합니다.
자바 비교 가능
일반 텍스트를 취하고 아래와 같이 간단한 열 전치 기술을 적용해 보겠습니다.
일반 텍스트를 가로로 배치하고 암호문은 다음과 같이 세로 형식으로 생성됩니다. hotnejpt.lao.lvi. 이를 해독하려면 수신자는 동일한 테이블을 사용하여 암호문을 일반 텍스트로 해독해야 합니다.
코드 -
다음 예를 이해해 봅시다.
def split_len(sequence, length): return [sequence[i:i + length] for i in range(0, len(sequence), length)] def encode(k, plaintxt): order = { int(val): n for n, val in enumerate(k) } ciphertext = '' for index in sorted(order.ks()): for part in split_len(plaintxt, len(k)): try:ciphertext += part[order[index]] except IndexError: continue return ciphertext print(encode('3214', 'HELLO'))
설명 -
위 코드에서는 다음과 같은 함수를 만들었습니다. 분할_len(), 열 또는 행 형식으로 배치된 고통 텍스트 문자를 뱉어낸 것입니다.
그만큼 인코딩() 메소드는 열 수를 지정하는 키를 사용하여 암호문을 생성했으며, 각 열을 읽어 각 암호문을 인쇄했습니다.
참고 - 전치 기술은 암호화 보안을 크게 향상시키기 위한 것입니다. Cryptanalyst는 동일한 전치 암호를 사용하여 암호문을 다시 암호화하는 것이 보안이 더 우수하다는 것을 관찰했습니다.
0:>