gpt4 book ai didi

java - 如何将 C 变量 (JNI) 存储到 Java 类实例

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:28:17 26 4
gpt4 key购买 nike

背景
我的应用程序现在已达到瓶颈,其中最慢的部分是所有数据都必须通过的 AES 加密和解密流。为了克服这个问题,我计划通过 JNI 和 OpenSSL 在 native 代码中实现这种加密,这样我就可以利用 AES-NI 和直接内存访问之类的东西(我的缓冲区已经是直接的,所以我已经可以获得指向它们的指针内存区域)

问题
每次我需要加密或解密某些数据时,用 key 重新创建 OpenSSL 密码是没有意义的。如果我使用 Java,我会简单地将密码实例存储为类中的一个字段,但是由于密码是一个 C“对象”,我不能这样做。

问题
如何将 C“对象”绑定(bind)到 Java 类实例,以便后续调用可以使用存储的“对象”。我想这与将“对象”指针作为 long 存储到 Java 类中,然后取消引用它有关,但是我不太确定这是否完全跨平台。

答案
必须是:

  • 简单
  • 跨平台

感谢您的宝贵时间!

最佳答案

你可以在Java Object中创建一个变量private int mNativeObj,以及一个保存native指针的方法,比如public void setNativeObject(int pointer)。在 C 代码中,调用 CallVoidMethod() 来保存指向 Java Object 的指针。可以引用Oracle's doc .

关于java - 如何将 C 变量 (JNI) 存储到 Java 类实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18375874/

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