我有一个字符串哈希使用SHA256作为一个键,但我将如何使用此密钥加密在CBC模式和加密+ +的AES字符串? 谢谢。如何使用AES加SHA256哈希作为密钥crypto ++
0
A
回答
0
我最终以下面的代码达到了预期的效果。
QString qhash = "hash";
std::string plain = "message";
std::string ciphertext;
std::string stdhash = qhash.toStdString();
CryptoPP::HexDecoder decoder;
decoder.Put((byte*)stdhash.data(),qhash.size());
decoder.MessageEnd();
CryptoPP::word64 size = decoder.MaxRetrievable();
char *decodedKey = new char[size];
decoder.Get((byte *)decodedKey, size);
byte hash[CryptoPP::AES::MAX_KEYLENGTH], iv[ CryptoPP::AES::BLOCKSIZE ];
CryptoPP::StringSource(reinterpret_cast<const char *>(decodedKey), true,new CryptoPP::ArraySink(hash, CryptoPP::AES::MAX_KEYLENGTH));
memset(iv, 0x00, CryptoPP::AES::BLOCKSIZE);
CryptoPP::CBC_Mode<CryptoPP::AES>::Encryption Encryptor(hash,sizeof(hash),iv);
CryptoPP::StringSource(plain, true, new CryptoPP::StreamTransformationFilter(Encryptor, new CryptoPP::HexEncoder(new CryptoPP::StringSink(ciphertext))));
return ciphertext;
相关问题
- 1. AES加密,SHA256
- 2. 使用Crypto ++的AES密钥包装
- 3. 使用Crypto ++/AES CFB加密的加密
- 4. sha256公钥的哈希
- 5. 使用Crypto ++生成SHA256哈希,使用字符串作为输入和输出?
- 6. 使用sha256密码AES加密
- 7. 使用SHA256密钥的哈希字符串
- 8. 如何为Facebook生成密钥哈希?
- 9. Nodejs 6.10.2 crypto AES密钥长度无效
- 10. 双哈希SHA256
- 11. 使用BigInteger作为密钥的Java AES加密/解密
- 12. Node.js Crypto AES密码
- 13. 如何解密PKCS8 DER加密私钥使用密码,在crypto ++
- 14. 加密AES密钥?
- 15. AES密钥,加密
- 16. 沿着加密的AES密钥存储密码哈希的安全隐患
- 17. 我需要在Windows 8上使用Sha256使用密钥哈希消息
- 18. android无效密钥哈希。密钥哈希不匹配任何存储的密钥哈希
- 19. Mysql sha256密码哈希编辑疯狂!
- 20. 如何使用SHA512加密哈希值
- 21. 如何使用JSBN加密Crypto-JS密钥?
- 22. 拆分SHA256哈希
- 23. 加密使用base32密钥的AES
- 24. Ruby的哈希使用密钥值
- 25. SHA-2哈希是否使用密钥?
- 26. 如何传输AES加密密钥?
- 27. 如何创建Facebook密钥哈希?
- 28. 如何在哈希值的哈希值基于公共密钥
- 29. 如何在sha256中sha256与sha256的哈希输出
- 30. 解密的哈希和加密哈希
您可能应该阅读加密的基础知识。 _你是如何创建你的密钥无关紧要的。 SHA256是一种红鲱鱼。 – MSalters
@ MSalters好的,谢谢,我对CBC模式下的AES工作原理有了一个基本的了解,但我只是解释了我是如何做出这个关键的,但我明白这并不重要。 – spies9149
为什么要散列一个你想用作键的字符串?为什么不使用适当的密钥派生方案? –