2012-07-18 4 views
3
내가 바이트의 블록을 암호화하는 엘가와 libgcrypt를 사용하고

를 사용하여 해독, 나는이 문제가 발생하고 때 나는 패딩 내 블록을 사용하지 않는데이터 손실 암호화 및 libgcrypt를하고 엘가

  1. 바이트는 0 바이트가 시작되고, 나는 암호 해독 중에 첫 번째 바이트를 잃어버린다.

  2. 패딩을 사용하면 암호화가 잘 작동하지만 패딩을 제거하면 제거되지 않습니다. 그리고 분명히 거기에있는 첫 번째 0 바이트입니다.

    RSA와 내가 같은 문제 :(

    내 테스트 코드가있는 데

:.

: www.tiago.eti.br/storage/post.c는 그리고 패딩을 사용하지 않는

을 변경해야 패딩을 사용하려면를

#define PADDING "pkcs1" 
#define PADDING "raw" 

그리고 암호화 알고리즘 변경 변경 :

gcc -Wall -g post.c -lgcrypt -o post 

내가 그것을 해결하기 위해 수행 할 수

#define ALG "elg" 

#define ALG "rsa" 

로는 사용할 필요가 컴파일하려면?

+1

블록 해독시 패딩이 제거 될 것으로 예상됩니다. – argentage

+2

문서에서 당신이 찾을 수 있습니다 "기능 :. gcry_error_t의 gcry_pk_decrypt (gcry_sexp_t * r_plain, gcry_sexp_t 데이터, gcry_sexp_t의 SKEY) (...)이 기능은 기본적으로 데이터에서 패딩을 제거하지 않습니다 libgcrypt를 패딩을 제거하도록하려면, '플래그 '에 암호화 할 때 사용 된 패딩 방법을 알려주는 힌트를 제공하십시오. (플래그 패딩 방식) " 그리고 제가 해냈습니다. 그러나 그것은 작동하지 않았다. –

답변

2

나는 Libgcrypt 메일 링리스트에 같은 질문을 올렸고 대답이있었습니다.

Libgcrypt가 패딩을 제거하지 않을 때까지 : 플래그를 인식하지만 패딩에 아무런 영향을주지 않습니다.

그래서 솔루션은 Libgcrypt를 1.5.0으로 업데이트합니다.