2017-11-21 9 views
0

openssl-1.0.1e/demos/smime에서 샘플 프로그램을보고 있습니다. openssl smime 데모 프로그램 (smenc.c 및 smdec.c)의 결과가 일치하지 않습니다.

gcc -o smenc smenc.c -lcrypto 
gcc -o smdec smdec.c -lcrypto 
./smenc  -> This encrypts encr.txt into smencr.txt 
./smdec  -> This decrypts smencr.txt into encrout.txt 

지금 원래로 왕복 결과를 비교 :

vimdiff -b encr.txt encrout.txt 

당신은 왕복 결과는 각 라인 '\ R'여분을 가지고 볼 수 있습니다 여기 내 단계입니다. 누군가 그 '\ r'문자가 추가 된 단계를 알고 있습니까? 답은 (1) 맨 SMIME에 실제로 사전

+0

1.0.1은 꽤 오래되었고 지원되지 않습니다. –

답변

0

에서

감사합니다. "-binary"태그를 찾습니다. 암호화하는 동안 "-binary"플래그를 사용하지 않으면 코드가 모든 EOL을 "\ r \ n"으로 바꿉니다.

좋은 예를 들면, 데모 코드는 왕복 일관성이 있어야한다고 생각합니다. 이 동작을하려면 smenc.c를 다음과 같이 플래그가 줄 수 있도록 수정할 수 있습니다.

int flags = PKCS7_STREAM|PKCS7_BINARY 

나는 어려운 방법이라고 생각했습니다. 하려면 openssl 코드를 추적에 관심이있는 사람들을 위해, 여기에 내가 무슨 짓을 :

  • 다운로드하려면 openssl-1.0.1e, 실행은 "./config --openssldir ="(그렇지 않으면 당신은 openssl.cnf에 대한 불만을 얻을 것이다 하지만 쉽게 돌아갈 수 있습니다.) ./Makefile을 수정하여 CFLAGS의 "-O3"을 -g로 바꾸고 "make"를 실행하십시오.

    gcc -g -o smdec smdec.c -L../../ -lcrypto -ldl 
    gcc -g -o smenc smenc.c -L../../ -lcrypto -ldl 
    
  • 지금 실행할 수 : 데모/SMIME에서

  • , 그렇지 않으면 시스템 libcrypto에 연결 가능성, 암호화를 구축하고 당신은뿐만 아니라 암호화 라이브러리를 추적 할 수 있도록 코드를 이런 식으로 해독 "gdb --args ./smenc"및 SMIME_crlf_copy()에서 중단. 백 트레이스를 실행하면 어떻게 도달하는지, CRLF가 모든 행에 추가되는 방법을 볼 수 있습니다.