c rsa 예제

이 작업을 수행하는 프로세스는 “Hello World”와 같은 메시지가 숫자로 인코딩된다는 것입니다(ASCII로 인코딩하거나 문자의 하위 집합으로 = 01 , b = 02 , . . . . . . . . . .

. .,…, . . . . . . . . . .

. . . . 이렇게 하면 일반적으로 “숫자 일반 텍스트”, “P {displaystyle P} “라고 하는 숫자 문자열이 생성됩니다. 예를 들어 a=1,…,z=26으로 인코딩된 “Hello World”는 08051212121231181204 {displaystyle 0805121212152315181204} . 그래서 많은 코드입니다! 이 예제에서는 함수 인코딩 문자열과 디코딩 문자열이 문자열을 정수(인코딩할 수 있음)와 뒤로 변환하는 작업을 담당합니다. 인코딩-rsa, 디코딩-rsa 및 모드 exp에서 발생하는 RSA 알고리즘에는 별로 중요하지 않습니다. 이전과 같이 키 쌍을 생성하지만(이번에는 일반화된 키 길이와 공용 지수로) BIO 구조체를 사용하여 공용 키와 개인 키를 분리했습니다.

BIO는 우리의 삶을 더 쉽게 만들기 위해 단지 OpenSSL 추상화입니다. PEM_write_bio_RSAPrivateKey 기능을 사용 하며 새로 만든 BIO 구조체에 개인 및 공개 키를 복사 하는 공개 키 대응. 그런 다음 BIO_pending 함수를 사용하여 일반 텍스트 문자열이 키를 저장하고 해당 메모리 양을 할당하는 데 필요한 길이를 얻습니다. 거기에서 BIO_read는 BIO 구조체의 키를 문자 문자열로 복사합니다. 마지막으로, 재미를 위해 그들을 인쇄 할 수 있습니다. 다음은이 방법을 통해 생성 된 키 쌍의 예입니다 : 위의 개념 증명으로 위의 파일에 작성 한 후 암호화 된 메시지 버퍼를 자유롭게 사용하므로 메모리를 다시 할당해야합니다. 그런 다음 이 데이터는 일반 텍스트가 아니므로 일반적인 fgets가 작동하지 않습니다. 암호화된 메시지를 암호화 버퍼에 다시 넣을 fread를 사용하여 위의 암호 해독 함수로 보낼 수 있습니다. 문자열은 다음과 같이 인코딩됩니다: 각 문자는 ASCII 값을 기준으로 2자리로 변환됩니다(32를 빼기, SPACE=00 등). 디코딩을 위해 주어진 정수에서 2자리마다 순서대로 읽고 32를 추가하고 문자로 다시 변환합니다. 블록 (및 훨씬 작은 키)이있는 구현의 경우 [1]을 참조하지만 실제로 유용한 것을 갖는 것에 조금 더 가까워지도록 합시다. 암호화된 메시지를 파일에 쓰고 다시 읽은 다음 암호를 해독할 수 있는지 살펴보겠습니다.

이봐 정말 당신이 RSA 암호화에 대해 설정 한 튜토리얼을 주셔서 감사합니다. 그것은 단지 현장에서 시작하는 나 같은 사람들에게 매우 유용합니다.

Bookmark the permalink.

Comments are closed.