【发布时间】:2012-07-17 16:47:53
【问题描述】:
我正在使用 Libgcrypt 和 Elgamal 来加密一个字节块,我遇到了 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
我能做些什么来解决它?
【问题讨论】:
-
我不确定我是否希望在解密块时删除填充。
-
在文档中您可以找到:“函数:gcry_error_t gcry_pk_decrypt (gcry_sexp_t *r_plain, gcry_sexp_t data, gcry_sexp_t skey) (...)默认情况下,此函数不会从数据中删除填充。让Libgcrypt 删除填充,在 `flags' 中给出提示,告诉加密时使用了哪种填充方法:(flags padding-method)“我做到了。但它没有用....