在Java中加密字符串并在C+中解密+;。我还要做什么? 我需要用java加密字符串,并用C++解密它。我看到C++有一个密码+库,java有jCE。 < C++ >,我引用这个页面

在Java中加密字符串并在C+中解密+;。我还要做什么? 我需要用java加密字符串,并用C++解密它。我看到C++有一个密码+库,java有jCE。 < C++ >,我引用这个页面,java,c++,encryption,Java,C++,Encryption,结果不同 在爪哇 abcd1234 7e77643ca7d46d46298be3239f1a5cdb abcd1234 C++中的P> 奇怪的人物 我必须做什么?显然,java版本是以十六进制到字符串格式显示的,试试这个 for (int i = 0 ; i < 16 ; ++i) std::cout << std::hex << static_cast<int>(buf[i]); std::cout << std::endl; for(i

结果不同

在爪哇 abcd1234 7e77643ca7d46d46298be3239f1a5cdb abcd1234

C++中的P> 奇怪的人物


我必须做什么?

显然,java版本是以十六进制到字符串格式显示的,试试这个

for (int i = 0 ; i < 16 ; ++i)
std::cout << std::hex << static_cast<int>(buf[i]);
std::cout << std::endl;
for(int i=0;i<16;++i)

std::cout显然java版本是以十六进制到字符串的格式显示的,试试这个

for (int i = 0 ; i < 16 ; ++i)
std::cout << std::hex << static_cast<int>(buf[i]);
std::cout << std::endl;
for(int i=0;i<16;++i)

std::cout显然java版本是以十六进制到字符串的格式显示的,试试这个

for (int i = 0 ; i < 16 ; ++i)
std::cout << std::hex << static_cast<int>(buf[i]);
std::cout << std::endl;
for(int i=0;i<16;++i)

std::cout显然java版本是以十六进制到字符串的格式显示的,试试这个

for (int i = 0 ; i < 16 ; ++i)
std::cout << std::hex << static_cast<int>(buf[i]);
std::cout << std::endl;
for(int i=0;i<16;++i)

std::cout您的一个问题是,“键”是从一个字符串派生的,该字符串为Java和C提供了不同的结果:

获取UTF-8(Linux)或ISO-8859-1(Windows)表示形式。无论如何,这些字符被解释为8位字符,您将得到一个16字节长的数组

C:您使用的是使用16位unicode字符的WCHAR。因此,您的密钥的长度为32字节

结论:不同的键意味着不同的结果

重要提示:请永远不要将ASCII字符用作加密密钥!如果要使用密码加密某些内容,请使用密码派生函数(如PBKDF2)从密码生成密码。

出于测试目的,您可以在代码中静态定义字节/字符数组:

char myArray[] = { 0x00, 0x11, 0x22 }; // c
byte[] myArray = new byte[]{ 0x00, 0x11, 0x22 }; // Java

您的问题之一是,您的“键”是从一个字符串派生的,该字符串为Java和C提供了不同的结果:

获取UTF-8(Linux)或ISO-8859-1(Windows)表示形式。无论如何,这些字符被解释为8位字符,您将得到一个16字节长的数组

C:您使用的是使用16位unicode字符的WCHAR。因此,您的密钥的长度为32字节

结论:不同的键意味着不同的结果

重要提示:请永远不要将ASCII字符用作加密密钥!如果要使用密码加密某些内容,请使用密码派生函数(如PBKDF2)从密码生成密码。

出于测试目的,您可以在代码中静态定义字节/字符数组:

char myArray[] = { 0x00, 0x11, 0x22 }; // c
byte[] myArray = new byte[]{ 0x00, 0x11, 0x22 }; // Java

您的问题之一是,您的“键”是从一个字符串派生的,该字符串为Java和C提供了不同的结果:

获取UTF-8(Linux)或ISO-8859-1(Windows)表示形式。无论如何,这些字符被解释为8位字符,您将得到一个16字节长的数组

C:您使用的是使用16位unicode字符的WCHAR。因此,您的密钥的长度为32字节

结论:不同的键意味着不同的结果

重要提示:请永远不要将ASCII字符用作加密密钥!如果要使用密码加密某些内容,请使用密码派生函数(如PBKDF2)从密码生成密码。

出于测试目的,您可以在代码中静态定义字节/字符数组:

char myArray[] = { 0x00, 0x11, 0x22 }; // c
byte[] myArray = new byte[]{ 0x00, 0x11, 0x22 }; // Java

您的问题之一是,您的“键”是从一个字符串派生的,该字符串为Java和C提供了不同的结果:

获取UTF-8(Linux)或ISO-8859-1(Windows)表示形式。无论如何,这些字符被解释为8位字符,您将得到一个16字节长的数组

C:您使用的是使用16位unicode字符的WCHAR。因此,您的密钥的长度为32字节

结论:不同的键意味着不同的结果

重要提示:请永远不要将ASCII字符用作加密密钥!如果要使用密码加密某些内容,请使用密码派生函数(如PBKDF2)从密码生成密码。

出于测试目的,您可以在代码中静态定义字节/字符数组:

char myArray[] = { 0x00, 0x11, 0x22 }; // c
byte[] myArray = new byte[]{ 0x00, 0x11, 0x22 }; // Java

好。。。a) 将键限制为ASCII是胡说八道。b) 可能的字符集差异。使用二进制数据。c)C++部分中的内存问题。瓦尔格林。d) 如果您已经解决了所有这些问题,请尝试用两种语言加密相同的数据并比较输出。开始和/或结束时的字节不同?e) 一旦知道如何提取真正的AES部分,就可以考虑解密。在那之前不行。嗯。。。a) 将键限制为ASCII是胡说八道。b) 可能的字符集差异。使用二进制数据。c)C++部分中的内存问题。瓦尔格林。d) 如果您已经解决了所有这些问题,请尝试用两种语言加密相同的数据并比较输出。开始和/或结束时的字节不同?e) 一旦知道如何提取真正的AES部分,就可以考虑解密。在那之前不行。嗯。。。a) 将键限制为ASCII是胡说八道。b) 可能的字符集差异。使用二进制数据。c)C++部分中的内存问题。瓦尔格林。d) 如果您已经解决了所有这些问题,请尝试用两种语言加密相同的数据并比较输出。开始和/或结束时的字节不同?e) 一旦知道如何提取真正的AES部分,就可以考虑解密。在那之前不行。嗯。。。a) 将键限制为ASCII是胡说八道。b) 可能的字符集差异。使用二进制数据。c)C++部分中的内存问题。瓦尔格林。d) 如果您已经解决了所有这些问题,请尝试用两种语言加密相同的数据并比较输出。开始和/或结束时的字节不同?e) 一旦知道如何提取真正的AES部分,就可以考虑解密。在此之前没有。我不熟悉aes_encrypt(..)函数。因此,我不能在这个主题上比较C和Java代码,我不是fam