问题标签 [libgcrypt]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
257 浏览

rsa - 为什么从 SSL 格式转换为 gcrypt 时 gcrypt 说要重新计算 RSA 密钥的系数?

libgcrypt 的文档说:

...和...

...和...

如果一个 p 是较小的素数,而另一个 q 是较小的素数,并且假设这两个方程除了交换 p 和 q 之外是相同的,那么真的有必要重新计算 u 吗?仅仅交换 p 和 q 还不够吗?

作为一个附带问题,我很好奇为什么 gcrypt 不使用与 PKCS#1 编码相同的值:

0 投票
0 回答
216 浏览

c++ - 如何从具有已知偏移量的 C/C++ 程序访问共享库的只读(静态常量)数据

我已经安装了 libgcrypt 共享库。生成 libgcrypt.so 文件。它有一些只读数据。

使用 nm 命令我可以找到只读数据的偏移量。

我想从 C/C++ 程序访问那些只读数据。

我有以下问题

  1. 如何使用这些偏移量从 C 程序访问那些只读数据(encT、dec_tables.T、dec_tables.inv_sbox)?

    2. 还有其他方法可以找到encT, dec_tables.T,dec_tables.inv_sbox 的ADDRESS 吗?

EDIT-1:全局(外部)函数,gcry_cipher_decrypt() 用于执行解密,它调用使用 dec_tables.T,dec_tables.inv_sbox 的静态 do_decrypt --> static do_decrypt_fn()。所以可以找到 dec_tables.T,dec_tables.inv_sbox 的地址相对于 gcry_cipher_decrypt 的地址吗?

我正在使用 gcc-4.9,Ubuntu 16.04。

如果有人帮助我完成上述示例程序或任何链接以了解我如何做到这一点,那将是一个很大的帮助?提前致谢。

0 投票
1 回答
231 浏览

c - libgcrypt-1.8.2 中的 gcry_mpi_t 类型定义

我正在寻找gcry_mpi_t类型的定义。我正在研究 GnuPG 的代码,它使用 libgcrypt,而后者又使用后者作为负责存储模数、RSA 密钥的质数等的类型。通常,/libgcrypt-1.8.2/cipher/rsa.c您可以在其中找到:

我发现这个 SO post提到了我试图定义的特定类型,但它没有说明它是如何定义的。

我的目标是在介绍 RSA 及其实现方式的基本 CS 类中使用该定义。因此,我希望展示如何通过专门struct为高效内存管理而设计的来处理特定的 RSA 变量。

但是,直到现在,我都找不到在 libgcrypt 代码中定义它的正确代码。谢谢 !

0 投票
0 回答
179 浏览

c - 如何在linux的C程序中访问位于共享库中的静态常量数据

在 libgcrypt 共享库中,在 AES 加密/解密操作期间访问查找表。在 AES 加密的情况下,1KB 查找表(定义为共享库中的静态 const u32 encT),在 AES 解密的情况下,1KB + 256 字节查找表(定义为

作为共享库的静态成员,encT 和 dec_tables 将放置在哪里?在代码部分或任何其他部分?

当我用 nm 命令检查时,它显示 r ,表示只读。

对于共享库,只读部分和代码部分是否相同?

我制作了一个示例程序来执行 AES 解密,并了解执行 AES 解密的程序的控制流程是什么。

这是我发现的,

在内部,do_decrypt_fn 函数最终解密操作是通过访问 dec_tables.T 和 dec_tables.inv_sbox 来执行的。

这里,dec_tables 定义在 rijndael-tables.h 中,这个头文件包含在 rijndael.c 文件中。

这是我对你的问题。

  1. 作为静态类型,所有这些静态函数和静态数据 dec_tables 在共享库模块之外都是不可见的。那么它们是如何定位以用于解密的呢?
  2. 我认为 encT 和 dec_tables 的这个 OFFSET 被某些函数或在某些计算中用来定位 dec_tables 以执行 AES 解密。 我对吗 ?

  3. 谁能解释使用 readelf/objdump/nm 或其他方式,共享库如何使用这些 OFFSET 来定位用于 AES 加密/解密的静态数据(encT/dec_tables)?

或者

  1. 这些 OFFSET 在任何意义上对定位 encT/dec_tables 静态数据有用吗?

我不知道 GOT 或 PLT 如何与 OFFSET 一起使用。有没有办法使用这些关于 GOT/PLT 的 OFFSET 来定位这些静态数据?

我正在使用 Ubuntu 16.06,gcc-4.9。

任何解决上述疑惑的链接/示例程序都会有很大帮助。提前致谢。

0 投票
0 回答
499 浏览

macos - 在 macOS 上通过终端安装 libgcrypt11-dev

我有一个项目使用诸如 malloc 和 gcrypt 之类的标头。为了让项目在我的 Ubuntu 机器上编译,我只需要运行:% sudo apt-get install libgcrypt11-dev 但是,我希望能够在我的 mac 上处理这个项目。我曾尝试将 brew 用于 libgcrypt11-dev,但这不是一个可行的 brew 库。有人对如何在 macOS 上安装等效的 libgcrypt11-dev 有任何建议吗?我在两台机器上都使用 GCC。

0 投票
0 回答
140 浏览

ubuntu - 删除 gnupg V.2.1.15 和 libgcrypt V.1.7.8 然后安装 gnupg V.2.1.0 和 libgcrypt V.1.6.3

我在笔记本电脑上使用 Lubuntu V.17.10。在这个版本的 Lubuntu 上默认安装 gnupg V.2.1.15 和 libgcrypt V.1.7.8。我想删除 gnupg V.2.1.15 和 libgcrypt V.1.7.8,然后安装 gnupg V.2.1.0 和 libgcrypt V.1.6.3。过去,我安装了 gnupg V.2.1.0 和 libgcrypt V.1.6.3。但是当我使用 multi 命令时,我给出了冲突的答案。

这些冲突导致我对安装 gnupg V.2.1.0 和 libgcrypt V.1.6.3 没有信心。我想在使用命令时gpg --version给出这些答案gpg (GnuPG) 2.1.0 libgcrypt 1.6.3

0 投票
1 回答
195 浏览

c++ - AES128 加密 libgcrypt 输出垃圾

我正在使用这个已解决的帖子作为参考,但似乎无法得到相同的结果:libgcrypt 中的 AES128 not encrypting

当我将字符串打印到控制台时,我得到了垃圾字符。我认为这可能是由于'\0'在字符串中,但我不确定如何去做。

//aes.cpp

//aes.h

//main.cpp

0 投票
0 回答
251 浏览

c++ - 在 c++ libgcrypt 上从 nodejs 解密消息

我已经能够在客户端应用程序和服务器上加密和解密消息。从服务器发送消息并在客户端解密时遇到问题。

服务器

//输出:

此令牌值到达客户端。这是客户端代码:

客户

//main.cpp

//输出:解密:��wΓ��o@՛B��%C��B�ƌ�ǝ]��q

解密函数没有给我任何错误代码。块字节被填充为 16 的倍数。否则我会得到一个无效的长度错误。我还注意到,如果尝试使用 AES128-ecb 加密字符串“test”,服务器会从客户端输出不同的十六进制加密。

//aes.cpp

在花了一整天的时间尝试修改代码并且没有运气之后,我来到这里寻求帮助。任何可以指导我正确方向的提示都值得赞赏。如果我需要提供更多代码,请告诉我。考虑到有 2 个应用程序正在运行,我尽了最大努力使它有点像 MCV。

0 投票
1 回答
381 浏览

cryptography - libgcrypt 如何为 CTR 模式增加计数器?

我有一个使用 libgcrypt 的 CTR 模式实现使用 AES-256 加密的文件。我希望能够部分解密文件(例如,在不解密整个文件的情况下解密 20 个块中的第 5-10 个块)。

我知道通过使用 CTR 模式,我应该可以做到。我只需要知道正确的计数器。问题在于我所拥有的只是块 0 的初始计数器。例如,如果我想解密块 5,我需要另一个计数器,它是通过对从 0 开始的每个块的初始计数器执行一些操作来实现的到 5。

我似乎找不到 libgcrypt 公开的 API,以便在给定初始计数器的情况下计算后续块的计数器。

给定块#0的计数器,我如何计算后面块(例如块#5)的计数器?

0 投票
1 回答
684 浏览

linux - 如何修复此 libgcrypt 交叉编译错误?

我正在尝试在带有 imx6 的板上交叉编译 ElinOS 的 GPG。我在编译 libgcrypt 时遇到问题。首先,这就是我所做的:

配置部分没有显示错误或警告,但 make 显示如下:

第一个错误导致我进入这部分代码:

知道这是从哪里来的吗?它看起来像一个配置问题,但我不知道现在在哪里看。