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

c++ - 如何构建 64 位版本的 Crypto++ dll?

我目前正在将 crypto++ 库实现到 ac# 应用程序中。在 32 位下一切正常。但是,当我尝试以 64 位构建 c++ DLL 时,出现此错误:

错误 1 ​​错误 PRJ0019:工具从“执行自定义构建步骤”返回错误代码 cryptopp cryptopp

然后我将项目设置更改为从默认的多字节构建 Unicode,并使其构建没有错误。但是,使用GetPowerUpSelfTestStatus().

我已经用谷歌搜索了这个问题,显然这不是一个不常见的问题。然而,似乎没有人找到解决方案,或者至少没有分享它。

我能做些什么?

0 投票
1 回答
1147 浏览

c++ - 如何使用 Crypto++ 解析 ZIP 文件?

加密++包括

使用 gzip (RFC 1952) 和 zlib (RFC 1950) 格式支持的 DEFLATE (RFC 1951) 压缩/解压缩

,但我不确定如何将其转换为读取 ZIP 文件。(我不反对实现我自己的 ZIP 遍历逻辑;但当然,如果库已经内置了它,我不想复制东西)。

如果库不提供开箱即用的此功能,如何访问 zlib 和 gzip 位(以实现压缩/解压缩步骤)?

0 投票
1 回答
2949 浏览

openssl - 使用crypto++验证openssl生成的数据签名

我有一个服务器,在 python 下运行,使用 m2crypto 签署消息 sha256 摘要我使用由 openssl CLI 生成的公共和私有 RSA 密钥。在服务器端,一切都可以
Python 代码:

privateKey = M2Crypto.RSA.load_key(sys.argv[2])
signedDigest = privateKey.sign(digest, 'sha256')

我仔细检查签名是否正确:

pubKey = M2Crypto.RSA.load_pub_key("key.pub.pem")
if pubKey.verify(digest, signedDigest, 'sha256') (等等....)

我将签名的 sha256 摘要存储在一个文件中,并将其与原始消息一起发送给客户端。
在客户端,在 c++ vc6 下运行,我加载签名的 sha256 摘要(作为二进制文件)和签名的消息。现在的目的是验证消息以及签名的 sha256。我有cryptopp作为静态链接,我知道它工作正常,因为我可以计算sha256,并与来自python的sha256进行比较,结果相同。这是代码:

RSA::PublicKey 公钥;
pubKey.Load(FileSource(LicenseControl::pubKeyPath, true));
RASS< PKCS1v15, SHA >::Verifier 验证者(pubKey);
//shaDigest是新计算的sha256,signatureByte是从服务器接收到的消息的签名
result = verifier.VerifyMessage( shaDigest, CryptoPP::SHA256::DIGESTSIZE, signatureByte, 512);

这会编译并运行,但总是返回 false。为确保签名有效,我直接使用 openssl CLI(而不是通过 m2crypto python 包装器)对其进行了验证:

openssl dgst -sha256 -verify key.pub.pem -signature sign original_file
验证OK

这确认签名的 sha256 摘要是可以的,并且它可以用于使用公钥成功验证消息。我知道 DER 和 PEM 格式(将 PEM 用于 openssl,DER 用于 cryptopp)。所以我相信公钥是正确的。现在我的问题是如何使用cryptopp库来验证签名???我已经通过了文档,但是经过几天的处理,它对我来说仍然看起来像中文。我试过像

RASS< PSSR, SHA >::Verifier 验证者(pubKey);

使用 PSSR 在 python 代码中加密,但没有运气......我现在考虑只用公钥解密签名的 sha256 摘要并将其与从接收文件计算的新 sha256 摘要进行比较。但即使这么简单,我也没有在文档中找到......知道如何正确使用验证器吗?
如何使用公钥解密?以防上一个问题无法解决

0 投票
2 回答
467 浏览

c++ - 解密内存问题

我最近一直在制作一个使用 AES256 加密/解密数据的服务器,它需要一段时间才能正确发送。但是现在我遇到了一个问题,我相信这取决于记忆,如果我发送“你好”这个词,它会很好地解密,如果我然后发送“你好”,它也会很好地解密,但如果我发送更短的内容比“你好”之后,它会在解密过程中出错,如果你打印它收到的加密字符串,它就会得到它应该有的东西加上旧字符串的额外长度。

例如

编码:

0 投票
3 回答
29988 浏览

c++ - 使用 Crypto++ 生成 SHA256 哈希,使用字符串作为输入和输出?

我需要一个如何使用 Crypto++ 从 std::string 生成 SHA256 哈希并输出 std::string 的示例。我似乎无法弄清楚。我尝试过的一切都给了我无效的输出。

这是interjay回答后的新代码:

SHA256("A") 的输出;是

在此处输入图像描述

我怎样才能把它变成可读的格式?

感谢 interjay 的回答,我能够生成最终的哈希值。

0 投票
2 回答
705 浏览

c++ - Base64Decode:如何获取数据

这似乎是一个简单的问题,但 crypto++ 似乎是以一种时髦的“尽可能钝”的方式设计的,所以我想知道......

如何从 CryptoPP::Base64Decode 对象中获取二进制数据?假设我不想将其写入文件或以其他方式对其进行编码,我该如何获取实际的二进制数据?

编辑:想通了;不知道如何关闭/删除它,有人吗?我现在在这里做什么合适?

0 投票
1 回答
5692 浏览

openssl - 如何在crypto++中使用密码解密PKCS8 DER加密的私钥

我正在尝试使用加密的私钥对消息进行签名,我当然有密码,所以我正在尝试解密密钥以便我可以使用它来签名。

我正在使用 C++ 库crypto++,这是我试图用来从文件中读取密钥的代码

执行此操作时,它会上升CryptoPP::DefaultDecryptor::KeyBadErr,我知道我有正确的密码,因为我设法通过以下命令行使用 openssl 解密密钥:

这是我的第一篇文章,我不确定我是否遵循所有规则来提问,但任何帮助或提示将不胜感激。

问候,

重的

0 投票
4 回答
28104 浏览

c++ - 如何在 Visual Studio 2010 中安装 Crypto++?

我下载了http://www.cryptopp.com/#download 5.6.1 并且现在不知道该怎么做。我是个菜鸟,需要好的指导。谢谢。

0 投票
5 回答
343 浏览

c++ - Advice about the Encryption Method I should Use

Ok, so I need some advice on which encryption method I should use for my current project. All the questions about this subject on here are to do with networking and passing encrypted data from one machine to another.

A brief summary of how the system works is:

I have some data that is held in tables that are in text format. I then use a tool to parse this data and serialize it to a dat file. This works fine but I need to encrypt this data as it will be stored with the application in a public place. The data wont be sent anywhere it is simply read by the application. I just need it to be encrypted so that if it were to fall into the wrong hands, it would not be possible to read the data.

I am using the crypto++ library for my encryption and I have read that it can perform most types of encryption algorithms. I have noticed however that most algorithms use a public and private key to encrypt/decrypt the data. This would mean I would have to store the private key with the data which seems counter intuitive to me. Are there any ways that I can perform the encryption without storing a private key with the data?

0 投票
2 回答
1317 浏览

c++ - C2440“初始化”:无法在 Microsoft VS 2010 实用程序文件中将 int 转换为 unsigned char*

当我编译我的 VS 2010 C++ 项目时,以下段落在文件 c:\program files\microsoft visual studio 10.0\vc\include\utility 中引发错误

该错误之后是另一个错误 C2439 'std::_Pair_base..::first element could not be convert'

(所有错误都是从德语翻译的,所以在英语中听起来可能略有不同)

我正在尝试在 VS 2010 上编译 AxCrypt 项目,项目文件已自动从 VS 2008 转换(但我不知道它是否可以在那里工作,我只有 VS 2010)。