问题标签 [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 回答
635 浏览

iphone - 在 iphone sdk 上使用 crypto++,在 app 引擎上使用 pycrypto

我正在尝试使用 crypto++ 加密 http 请求,并在应用引擎服务器端使用 pycrypto 对其进行解密。使用 Arc4 加密,我可以在 iphone 端成功加密和解密,但是当我尝试在应用程序引擎上解密时,结果是乱码。在客户端加密后的密文与我检查日志时在服务器上收到的文本相同,所以如果它们在视觉上相同,为什么解密会失败?

我想这可能与 NSString 的编码有关,因为我发现我需要在解密之前在服务器端调用 encode(),以避免在尝试用 ascii 编码密码时decrypt() 失败. 我有一个单独的帖子对此进行了深入研究。任何人都可以提供一些建议吗?

带有谷歌应用引擎的crypto++ / pycrypto

更新:我发现使用 Crypto++ 在 C 中加密产生的密文与使用 PyCrypto 在 python 中加密的密文不同。初始化密钥时我做错了什么吗?我做类似的事情:

在 C 中。在 python 中,我这样做:

C 中的 % 编码结果密码与 python 中的不同。我注意到在 C 中,我可以为 keylength 传递第二个参数,我猜它应该是 1 来表示“a”,从而产生与不输入参数时不同的密码。但是,%-encoded 结果仍然与 python 编码不同。

也许我的 init 看起来有什么特别不对劲的地方吗?

0 投票
2 回答
3630 浏览

c++ - 谁能解释为什么我的加密++解密文件短 16 个字节?

为了将 AES 加密文本作为std::istream解析器组件提供,我正在尝试创建一个std::streambuf包装 vanilla crypto++ 加密/解密的实现。

main()函数调用以下函数来比较我的包装器和 vanilla 实现:

  • EncryptFile()- 使用我的 streambuf 实现加密文件
  • DecryptFile()- 使用我的 streambuf 实现解密文件
  • EncryptFileVanilla()- 使用 vanilla crypto++ 加密文件
  • DecryptFileVanilla()- 使用 vanilla crypto++ 解密文件

问题是虽然EncryptFile()和创建的加密文件EncryptFileVanilla()是相同的。创建的解密文件DecryptFile()不正确,比创建的文件少 16 个字节DecryptFileVanilla()。可能不是巧合,块大小也是 16。

我认为问题一定出在 中CryptStreamBuffer::GetNextChar(),但我已经盯着它和 crypto++ 文档看了好几个小时了。

任何人都可以帮助/解释吗?

std::streambuf也欢迎任何其他关于我的实施多么糟糕或幼稚的评论;-)

谢谢,

汤姆

0 投票
2 回答
1936 浏览

cryptography - Crypto++ AES解密如何?

那里几乎没有关于加密++的菜鸟指南。或者无论如何我都没有找到。我想要做的是解密我用另一个 AES 加密器生成的 uchars 数组。我从哪里开始?我已经建立了图书馆并链接了盛大的图书馆。我是否需要设置任何东西,或者我只是在我的数组上调用一个函数(如果需要,是什么函数)?

我真的很想从知道这些东西的人那里得到一些帮助。

谢谢

0 投票
1 回答
1899 浏览

c++ - C++ 正确写入/读取十六进制值 (CryptoPP)

我正在尝试运行一个使用 AES 加密和解密的程序。

(来自http://www.codeproject.com/KB/security/AESProductKey.aspx

所以我无法编写一个代码,它可以正确地完成评论中提到的东西(在 DMZ 之后,ofstream 开始的地方)。提前致谢。

0 投票
2 回答
3950 浏览

c++ - 将 QString/QChar 转换为 Crypto++ 接受

我想制作加密(稍后解密)用户输入字符串的程序。这是加密的开始:

现在,我必须转换QStringchar*std::string以便它可以被 Crypto++ 接受。我认为这QByteArray很好,因为它具有.data()返回char *. (getData总是 17 个或更多字节长:CryptoPP 需要至少 17 个字节用于 AES 加密)。所以,我使用了以下代码:

一切似乎都很好。但我希望它支持非 ASCII 字符(我的意思是俄语、立陶宛语等)。解密后变为?. 我该如何解决这个问题?我明白,这不std::string支持他们。


编辑:这是更新的代码:

加密:

和解密:

它有我错过的任何错误吗?

0 投票
1 回答
1410 浏览

aes - 使用 AES 加密/解密

我正在编写小程序来使用 AES 加密/解密文件。我正在使用 Cryptopp 库。

我需要帮助来理解一些事情。

当我加密文件时,我应该在文件开头写 IV 以便稍后解密?

我不想检查给定解密文件的密码是否正确。我是不是该:

  • 在加密之前将一些字符串放在文件的开头(例如 TRUE)。解密后检查。

  • 加密前检查文件的MD5。把它放在加密文件的开头。解密前读取MD5,解密文件,检查解密文件的MD5并进行比较。

0 投票
2 回答
958 浏览

c++ - 为什么 Crypto++ 和 Ruby 生成的 SHA-1 哈希值略有不同?

我正在使用两个不同的库来生成用于文件验证的 SHA-1 哈希 - Crypto++库的旧版本和由 Ruby 实现的 Digest::SHA1 类。虽然我见过其他由编码差异导致的哈希不匹配的实例,但这两个库输出的哈希几乎相同。

例如,通过每个进程传递一个文件会产生以下结果:

加密++ 01c15e4f46d8181b984fa2a2c740f8f67130acac

红宝石:eac15e4f46d8181b984fa2a2c740f8f67130acac

如您所见,只有哈希字符串的前两个字符不同,并且这种行为在许多文件中重复出现。我查看了每个实现的源代码,乍一看,我发现的唯一区别在于用于 160 位散列的数据十六进制。我不知道该十六进制是如何在算法中使用的,而且我认为如果有人以前遇到过这个问题,我可能会更快地提出这个问题。

我已经包含了来自下面各个库的数据。我还包括了来自 OpenSSL 的值,因为这三个库中的每一个都有略微不同的值。

加密++:

红宝石:

OpenSSL:

顺便说一下,这里是用于在 Ruby 中生成哈希的代码。我无权访问 Crypto++ 实现的源代码。

0 投票
2 回答
631 浏览

c++ - 从 Crypto++ 获取随机输出

无法弄清楚为什么我从 Crypto++ RC2 解码器得到看似随机的输出。输入总是相同的,但输出总是不同的。

0 投票
3 回答
439 浏览

windows - 用于解码 RSA 的 Crypto++ 的小型 Windows 替代品?

Crypto++ 很大(已编译),我想找到一种替代方法来解码 RSA 编码块。

我正在寻找适用于 Windows 的解决方案。

0 投票
2 回答
3302 浏览

c++ - 在发布模式下编译但在调试模式下编译时出错

当我在调试模式下在 VS 2008 上编译时,一切正常。当我在发布模式下编译相同的东西时,并非一切正常。据我所知,包含目录是相同的,并且没有额外的预处理器符号。

有什么帮助吗?

1>zlib.cpp 1>C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\xutility(419):错误 C2664:'CryptoPP::AllocatorWithCleanup::AllocatorWithCleanup(const CryptoPP::AllocatorWithCleanup &)' : 无法将参数 1 从 'CryptoPP::AllocatorWithCleanup' 转换为 'const CryptoPP::AllocatorWithCleanup &' 1> with 1> [ 1>
T=std::_Aux_cont 1> ] 1>
and 1> [ 1>
T=CryptoPP: :HuffmanDecoder::CodeInfo 1> ] 1> 和 1> [ 1> T=std::_Aux_cont 1>
] 1> 原因:无法从 'CryptoPP::AllocatorWithCleanup' 转换为 'const CryptoPP::AllocatorWithCleanup' 1> with 1 > [ 1>
T=CryptoPP::HuffmanDecoder::CodeInfo 1> ] 1> and 1> [ 1> T=std::_Aux_cont 1>
] 1> 没有可以执行此转换的用户定义转换运算符,或者该运算符不能调用 1> C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\xutility(417) : 在编译类模板成员函数 'std::_Container_base_aux_alloc_real<_Alloc>::_Container_base_aux_alloc_real(_Alloc)' 1> 时1> [ 1>
_Alloc=CryptoPP::AllocatorWithCleanup 1> ] 1> C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\vector(421) :请参阅类模板实例化 'std::_Container_base_aux_alloc_real <_分配>'正在编译 1> 与 1>
[ 1>
_Alloc=CryptoPP::AllocatorWithCleanup 1> ] 1> C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\vector(439) :请参阅类模板实例化 'std::_Vector_val<_Ty,_Alloc> ' 正在编译 1> with 1> [ 1> _Ty=CryptoPP::HuffmanDecoder::CodeInfo, 1>
_Alloc=CryptoPP::AllocatorWithCleanup 1> ] 1>
C:\myproject\sshlib\zinflate.h(79) :见参考到类模板实例化 'std::vector<_Ty,_Ax>' 正在编译 1> 1>
[ 1>
_Ty=CryptoPP::HuffmanDecoder::CodeInfo, 1>
_Ax=CryptoPP::AllocatorWithCleanup 1> ] 1>zinflate。 cpp

它最终指向的代码行是:

编辑:更多信息:

当我的预处理器包含 NDEBUG 而不是 _DEBUG 时,我得到了这个错误。如果我将发布配置更改为 _DEBUG 而不是它可以编译。为什么?