我有一個字符串哈希使用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. Nodejs 6.10.2 crypto AES密鑰長度無效
- 9. 使用BigInteger作爲密鑰的Java AES加密/解密
- 10. AES密鑰,加密
- 11. 沿着加密的AES密鑰存儲密碼哈希的安全隱患
- 12. 如何解密PKCS8 DER加密私鑰使用密碼,在crypto ++
- 13. 我需要在Windows 8上使用Sha256使用密鑰哈希消息
- 14. android無效密鑰哈希。密鑰哈希不匹配任何存儲的密鑰哈希
- 15. Mysql sha256密碼哈希編輯瘋狂!
- 16. 如何傳輸AES加密密鑰?
- 17. 如何創建Facebook密鑰哈希?
- 18. JavaScript附加密鑰:值對哈希
- 19. 如何在sha256中sha256與sha256的哈希輸出
- 20. 哈希表密鑰生成
- 21. 哈希會話密鑰
- 22. AES加密密鑰和IV
- 23. Android AES加密密鑰
- 24. Byte []密鑰加密C#Aes
- 25. 想要爲AES加密創建密鑰
- 26. AES解密只在Crypto ++中
- 27. Swift:如何使用枚舉作爲密鑰對哈希映射進行編碼?
- 28. 如何墊中使用的短字符串作爲AES密鑰?
- 29. TurboPower LockBox如何使用AES與字節數組作爲密鑰
- 30. 將SHA256哈希字符串轉換爲Python中的SHA256哈希對象
您可能應該閱讀加密的基礎知識。 _你是如何創建你的密鑰無關緊要的。 SHA256是一種紅鯡魚。 – MSalters
@ MSalters好的,謝謝,我對CBC模式下的AES工作原理有了一個基本的瞭解,但我只是解釋了我是如何做出這個關鍵的,但我明白這並不重要。 – spies9149
爲什麼要散列一個你想用作鍵的字符串?爲什麼不使用適當的密鑰派生方案? –