0

我在使用 libgcrypt 进行加密时使用了弱密钥,并且我从 libgpg-error 作为“弱加密密钥”到 stderr 收到了关于它的适当警告。问题是我正在将 std:err 读入 GUI,我不想在其中看到它们(只是因为它们太多了)。我可以在 GUI 中过滤 stderr 输入,但我更喜欢的方法是以更智能的方式抑制警告。不幸的是,我不知道如何实现这一目标。在阅读 libgcrypt 文档时,我发现它只允许暂停安全内存警告。阅读 libgpg-error 源代码我没有发现任何有用的东西。

您的建议将不胜感激。

提前致谢。简

4

1 回答 1

0

最后我要问 libgcrypt 开发人员。以下是 Werner Koch 的回答,我想以这种方式感谢他。我希望这会对其他人有所帮助。

==================================================== =================

如果您尝试使用弱密钥进行常规加密,并且 DES 模块内部的错误检查会阻止您实际执行此操作,则没有记录的方法可以使用它。弱密钥是永远不应该发生的事情。

但是,您可以使用私有控制代码来禁用弱键检测。我们在回归测试中使用它。但请注意,这是未记录的私有功能,它可能适用于也可能不适用于未来版本的 Libgcrypt。这是一段代码摘录:

#define PRIV_CTL_DISABLE_WEAK_KEY   61

err = gcry_cipher_open (&hd, cipher_algo, cipher_mode, 0);
if (err)
die ("gcry_cipher_open failed for algo %d, mode %d: %s\n",
    cipher_algo, cipher_mode, gpg_strerror (err));
gcry_cipher_ctl (hd, PRIV_CTL_DISABLE_WEAK_KEY, NULL, 0);

==================================================== =================

编辑

现在在最新的 libgcrypt 版本中禁止禁用弱键警告,因此上述内容不再有意义。我们通过在 boost 流中捕获 stderr 并在将其提供到日志之前将其过滤掉来解决此问题。

于 2011-09-22T11:15:53.853 回答