libgcrypt AES 返回 ascii 密文?

发布于 2024-11-04 15:01:32 字数 336 浏览 0 评论 0原文

嘿,我正在开发一个 JNI 共享库,它使用 AES256 CFB 模式使用 libgcrypt 加密一些数据,然后将加密的数据传递回 java 应用程序以进行进一步处理。

但是,当我尝试通过再次将数据传递到共享库来解密数据时,我无法再取回原始纯文本。看来,如果我加密和解密相同的数据而不将其传回 Java 应用程序,我将得到原始的纯文本。

我认为这是我用来将加密数据存储到 NewStringUTF() (即 env->NewStringUTF(buf))的 char 缓冲区的转换,以发送回导致问题的 java,所以有吗获取/将加密数据的输出转换为ascii 或者是否还有其他解决办法?

非常感谢, 富

Hey, I m developing a JNI shared library which uses AES256 CFB mode to encrypt some data using libgcrypt and then passing the encrypted the data back into java app for further processing.

However, when I try to decrypt the data by passing it again to the shared library I can no longer get the original plain text back. It seems that if I encrypted and decrypted the same data without passing it back to the Java app I would get the original plain text back.

I was thinking that it was the conversion of the char buffer that I used to store the encrypted data to a NewStringUTF() (ie env->NewStringUTF(buf)) to send back to the java that was causing the issue so is there away to get/convert the output of the encrypted data to ascii or if there was some other work around?

Many thanks,
Foo

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

菩提树下叶撕阳。 2024-11-11 15:01:32

为什么只使用 JNI 和外部库来加密字符串?使用Java内置的 javax.crypto.Cipher 类。

但是,关于您的实际问题,您应该将数据作为字节数组而不是字符串传递。密码对字节进行操作,而不是抽象的 Unicode 代码点。

Why are you using JNI and external libraries just to encrypt a string? Use Java's built-in javax.crypto.Cipher class.

However, regarding your actual question, you should be passing the data as a byte array, not a string. Ciphers operate on bytes, not abstract Unicode codepoints.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文