gpt4 book ai didi

java - 在 Java 中加密 (AES),在 C++ 中解密 (OpenSSL)

转载 作者:太空宇宙 更新时间:2023-11-04 14:23:36 24 4
gpt4 key购买 nike

全部,

我正在尝试使用 AES 256 在 Java 中加密一个字符串,并在 C++ 中使用 openssl 对其进行解密。在 Java 中我:

  1. 在 JCEKS 中生成了一个 SecretKey
  2. 加密字符串
  3. 用 base64 对 SecretKey 中的字符串和 getEncoded() 进行编码

现在我尝试使用 OpenSSL 在 C++ 中解密它:

string encoded = string("LtANvfmnb5zj+4+g6I7hC53eHMIRa4BOkzMpXYLlA9DRnRWjQjO9uMot6hR7zzTIOtdmkRJ16aVZRfIT3sYn17jYEJjvAN9/N7FbblLplCtOuHatGffH0pSf8lu76SUzDIZU+EXgTnK1SsEa4sndcXvg5jaElxr4GCHq+F2aL7t+LVjbqWg4kpYkYbKdrKQgOsMCbBBG2aMFTmQ/cxnVyH8juC/ZTSrPMyjZ7KxS0P9PzfmxkeSi3VsBIjXL6Q4pneZeemP+1JdG02yQWhruJUuH5aRE0piQ776lxt6g0wU=");
string encodedKey = string("1rE2AM4Xf0ItxN/s1oDvaNmXhXlVF3hE+vSkyMPzDl4=");

string decodedEnc = base64_decode(encoded);
string decodedKey = base64_decode(encodedKey);

const unsigned char *keyBytes = reinterpret_cast<const unsigned char*>(decodedKey.c_str());
const unsigned char *in = reinterpret_cast<const unsigned char*>(decodedEnc.c_str());



cout << "initializing" << endl;
AES_KEY key;
/* set the encryption key */
AES_set_encrypt_key(keyBytes, 256, &key);

unsigned char *out = (unsigned char*) malloc(1024);

cout << "Decrypting" << endl;

AES_ecb_encrypt(in,out,&key,AES_DECRYPT);

cout << "decrypted " << out << endl;
char* dec = reinterpret_cast< char*>(out);

string decrypted = std::string(dec);

cout << "Decrypted String : '" << decrypted << "'" << endl;

我得到的只是打印到终端的垃圾。我觉得我很接近,所以任何帮助将不胜感激。

谢谢马克

最佳答案

根据我的理解,尝试解密 key ,然后尝试调用AES_decrypt,如下所示:

cout << "Decrypting" << endl;

从这一行开始...使用如下代码:

AES_KEY k
AES_set_decrypt_key(keyBytes, 256, &k);

unsigned char* outdecrypt = new unsigned char[1024];
AES_decrypt(out, outdecrypt, &k);

关于java - 在 Java 中加密 (AES),在 C++ 中解密 (OpenSSL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5766252/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com