2012-07-18 67 views
3

我使用Libgcrypt與Elgamal的加密字節塊解密和我有2個問題:數據丟失時,用libgcrypt和ElGamal

  1. 當我不使用填充和我的塊字節開始爲零字節,我在解密期間丟失了第一個字節;

  2. 如果我使用填充加密工作正常,但是當我解密填充不會被刪除。顯然,第一個零字節仍然存在。

使用RSA我有同樣的問題:(

我的測試代碼有:www.tiago.eti.br/storage/post.c 它不使用填充

要使用填充你需要改變:

#define PADDING "raw" 

#define PADDING "pkcs1" 

並更改加密算法的改變:

#define ALG "elg" 

#define ALG "rsa" 

要編譯你需要使用:

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

我能做些什麼來解決呢?

+1

我不確定在解密塊時我會期待填充被刪除。 – argentage 2012-07-18 15:34:07

+2

在文檔中,你可以發現這一點: 「功能:gcry_error_t gcry_pk_decrypt(gcry_sexp_t * r_plain,gcry_sexp_t數據,gcry_sexp_t SKEY) (...)這個函數不從數據在默認情況下刪除填充,以讓Libgcrypt去除填充,在'flags'中給出提示,告訴加密時使用哪種填充方法: (標記填充方法)「 我做到了。但它沒有工作.... – 2012-07-18 17:51:12

回答

2

我在Libgcrypt郵件列表中發佈了相同的問題,我有一個答案。

Libgcrypt直到1.5.0不會刪除填充:它會識別標記但不填充填充。

所以解決方案是將Libgcrypt更新爲1.5.0。