【问题标题】:Data loss when encrypting and decrypting using libgcrypt and Elgamal使用 libgcrypt 和 Elgamal 加密和解密时的数据丢失
【发布时间】:2012-07-17 16:47:53
【问题描述】:

我正在使用 Libgcrypt 和 Elgamal 来加密一个字节块,我遇到了 2 个问题:

  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

我能做些什么来解决它?

【问题讨论】:

  • 我不确定我是否希望在解密块时删除填充。
  • 在文档中您可以找到:“函数:gcry_error_t gcry_pk_decrypt (gcry_sexp_t *r_plain, gcry_sexp_t data, gcry_sexp_t skey) (...)默认情况下,此函数不会从数据中删除填充。让Libgcrypt 删除填充,在 `flags' 中给出提示,告诉加密时使用了哪种填充方法:(flags padding-method)“我做到了。但它没有用....

标签: c elgamal libgcrypt


【解决方案1】:

我在 Libgcrypt 邮件列表中发布了同样的问题,我得到了答案。

Libgcrypt 直到 1.5.0 都不会删除填充:它可以识别标志,但不会对填充做任何事情。

所以解决方案是将 Libgcrypt 更新到 1.5.0。

【讨论】:

    猜你喜欢
    • 2022-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-23
    • 2011-06-21
    • 1970-01-01
    相关资源
    最近更新 更多