gpt4 book ai didi

java - 在 Java 中加密字符串并在 C++ 中解密。我还需要做什么?

转载 作者:行者123 更新时间:2023-11-28 00:30:07 27 4
gpt4 key购买 nike

我需要用 Java 加密字符串并用 C++ 解密。我看到 C++ 有一个 Crypto++ 库,而 Java 有 JCE。

对于c++,我引用这个页面

http://social.msdn.microsoft.com/Forums/ko-KR/bd1722e7-07b3-4119-b7de-10788f9f6e36/aes-string-encryption-in-c?forum=windowsmobiledev

结果不同

在Java中abcd12347e77643ca7d46d46298be3239f1a5cdbabcd1234

在 C++ 中奇怪的字符...

我必须做什么?

最佳答案

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

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

C:您正在使用 WCHAR,它使用 AFAIK 16 位 unicode 字符。因此你的 key 最后是 32 字节长。

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

重要提示:请永远不要使用 ASCII 字符作为加密 key !如果您想使用密码加密某些内容,请使用 PBKDF2 等密码派生函数从密码生成密码。

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

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

关于java - 在 Java 中加密字符串并在 C++ 中解密。我还需要做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23271602/

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