问题标签 [crypto++]

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 回答
352 浏览

ant - 使用 ANT 的 Crypto++ 链接器错误

我正在尝试对他为我们编写的一些自定义软件的前员工的构建过程进行逆向工程。我已经看到可以编译所有内容,但是在链接过程中出现错误,表明crypto++存在问题。有什么线索吗?

操作系统是 Fedora 11

0 投票
1 回答
1529 浏览

compilation - 如何将 Crypto++ 集成到 C++ Builder 2010 / [ILINK32 错误]

我试图通过 C++ Builder 2010 编译以下(示例)代码:

http://swarmapps.wordpress.com/2009/11/24/a-simplification-wrapper-for-the-crypto-library/

http://pastebin.com/f6bd13d59/example.cpp

( http://pastebin.com/f2fc53f83/BasicCryptoPPWrap.h )

没有编译器错误,但链接失败:

[ILINK32 错误] 错误:未解析的外部 'CryptoPP::SimpleKeyingInterface::SetKey(const unsigned char *, unsigned int, CryptoPP::NameValuePairs&)' 引用自 E:\TEST\DEBUG\FILE1.OBJ

我该如何解决这个问题?

0 投票
2 回答
9869 浏览

php - 如何解密以前通过 Crypto++ 加密的 OpenSSL 上的字符串?

编辑:我发现钥匙不是我在评论中所说的问题。我可以毫无问题地使用它们来加密和解密 OpenSSL 上的数据。

但我需要解密之前通过 Crypto++ 加密的 OpenSSL 上的字符串,但它不起作用。

我稍后会发布更多详细信息。

嗨,我已经使用 Crypto++ 生成的 RSA 公钥加密了一个字符串,现在我正在尝试(仍然不成功)通过 PHP 和 OpenSSL 对其进行解密。

这就是我正在做的事情:

  • 非 base64 或十六进制编码的私钥存储在名为“rsa-private.key”的文件中
  • 加密消息存储在“message.txt”中(十六进制编码)

第 1 步:通过以下方式加载私钥:$key = file_get_contents("rsa-private.key");

第 2 步:使用以下函数将密钥转换为 PEM 格式:

(stackoverflow.com/questions/1357569/)

第 3 步:准备密钥以供 OpenSSL 进一步使用:(没有任何问题)

第 4 步:获取消息并使用以下函数解码消息:

第 5 步:解密字符串:(不起作用)

$decrypteddata 始终为空。

我不知道为什么它不起作用。有人注意到我做错了什么吗?

0 投票
3 回答
2431 浏览

php - 将 Crypto++ AES 加密移植到 PHP 的 mcrypt 时密钥大小不正确

早些时候我设法将一些 C++ CryptoPP Rijndael_128 CBC 代码移植到 MCrypt PHP,但现在我遇到了 CFB 模式的问题。C++ 和 PHP 结果不匹配(好吧,第一个字节匹配,但这可能是巧合,其他一切都不匹配)。通过一些诊断,看起来 PHP 的 mcrypt 没有正确设置密钥长度?

这是 C++(为简单起见,删除了诊断和杂项):

这是PHP:

g_encrypt_key并且g_encrypt_iv都是 16 字节长,并且字节匹配 C++ 和 PHP 版本。对于 PHP 版本,它是由字节构造的二进制字符串(是的,我已经检查过它们是相同的)。

我添加了对 PHP 版本的调用来检查$cipher的块大小、密钥大小等。块大小和 iv 大小都是 16;支持的密钥大小报告为 16、24 和 32 - 都符合预期。

我认为问题出在哪里,密钥大小被报告为 32 字节。查看 mcrypt 文档,设置密钥大小的唯一方法是提供所需大小的密钥。但我传递了一个 16 字节的密钥!那么为什么它报告存在一个 32 字节的密钥呢?如果 CFB 模式必须使用 32 字节的密钥,那么 CryptoPP 为什么会接受它呢?解决办法是什么?我可以强制 PHP 使用已提供的 16 字节密钥吗?还是我缺少一个参数,它在 CryptoPP 中的默认设置与在 MCrypt 中的设置不同?

I am using the CFB mode because I want to minimize the length of the resulting encrypted data. The few bytes that padding would introduce, do matter in this application.

I need to be able to encrypt/decrypt in C++ but only encrypt in PHP. AES is arguably overkill for my application - the minimum I need is "a good scrambling of the bytes" so that the function of individual bytes in the data are not obvious.

0 投票
2 回答
1907 浏览

c++ - 确定性地生成加密安全密钥和 IVEC

背景

我正在设计一个系统,可以为静态 Web 内容的用户开发动态身份验证方案。其动机是预先生成大量复杂但敏感的 Web 内容,然后使用基于 cookie(嵌入可逆加密信息)的身份验证静态地提供它,由 Web 服务器单独强制执行。使用 AEAD 模式加密原语。

问题

我需要生成在一段时间内有效的 IVEC 和密钥,比如一周(当前有效对)。并且过去的 IVEC/密钥也有效期为 2 周(历史有效),并且使用历史有效机密加密的任何数据都将使用当前有效的 IVEC/KEY 重新加密。

我需要的是一个确定性的 CSPRNG,它包含随机数和密码短语的种子,并且可以以索引方式生成 64 位或 128 位数字块。如果我使用“自 1970 年 1 月 1 日以来的几周”作为我假设的 CSPRNG 的索引元素之一,我应该能够构建一个系统,随着时间的推移自动更改密钥。

我正在考虑的方法

现在我在 cryptopp 中看不到这样的功能,或者我现在已经足够了解术语了,而且由于 cryptopp 是目前最先进的加密库,我没有信心找到另一个。所以,如果我找不到那里的实现,我应该推出自己的。从连接的数据中生成一个静态字符串结构,然后对其进行散列(如下所示)可以解决问题吗?

RIPEMD160(RandomPreGeneratedFixedNonce:PassPhrase:UInt64SinceEpoch:128BitBlockIndexNumber);

注意:块编号将被分配并具有规则的结构,例如对于 128 位摘要,块 0 的前 64 位将用于 ivec,而元素 1 的所有元素将用于 128 位密钥。

这是一种合理的方法(--即加密安全)吗?

-- 编辑:发表接受评论 --

经过一番思考,我决定将我最初认为的密码短语和 nonce/salt 合并为一个 16 字节(加密强)密钥,并使用 PKCS #5 中概述的技术来派生多个基于时间的密钥。不需要盐,因为不使用密码。

0 投票
2 回答
24621 浏览

c++ - 带有填充 pkcs7 c++ 代码的 AES

我需要一个带有 aes-cbc256 和填充的字符串加密示例(在 C++ 中 -> 我正在使用 linux-Ubuntu):PKCS7 请帮忙。


对于以下代码,如何将 IV 设置为 0 并将键值设置为字符串值?我还想添加 pkcs7 填充。我正在使用 crypto++ 库(在 Linux 中)

0 投票
2 回答
4944 浏览

c++ - 如何使用 Crypto++ 解密 C++ 中的字符串数据,其中使用 pyCrypto 在 Python 中加密原始字符串

我刚刚用 pyCrypto 轻松加密了一个数据字符串,但不知道如何在 crypto++ 中解密它。任何人都可以使用crypto++帮助提供C++中的示例解密代码吗?这是我的python代码:

0 投票
1 回答
3195 浏览

c++ - 生成的加密字符串在 PyCrypto 和 Crypto++ 中的大小不同

我最近使用了一个 Python 脚本来加密一个字符串。但无法使用 Crypto++ 在 C++ 中解密它。我刚刚比较了生成的加密字符串,发现它们不一样。有人可以帮忙吗?

这是我的 Python 代码:

这是我的 C++ 代码:

0 投票
4 回答
2242 浏览

c# - aes256 结果在 C# (Windows) 和 C++ (Ubuntu) 实现中有所不同

这是在C(Windows和C++(Ubuntu使用libcrypto++)上使用cbc和pkcs7填充(和密码)加密的aes256的代码。加密结果不一样。为什么?

C#:

C++:

0 投票
2 回答
4634 浏览

c++ - 在 C++ 中使用加密流

我想使用一些加密操作(主要是完整性检查哈希和)。但是,我在查找执行此类操作的文档时遇到问题:

PS。它可能是不同的库,只要它 a) 与 GPL-3 兼容 b) 在 GNU/Linux 上工作

聚苯乙烯。我不坚持使用crypto++,但是我希望具有类似IOStream的行为,以便与其他C++库进行互操作。