2012-07-18 82 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。