我有一個字符串哈希使用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
爲什麼要散列一個你想用作鍵的字符串?爲什麼不使用適當的密鑰派生方案? –