- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想创建可以通过网络与 C 客户端安全通信的 Java 服务器。我选择将 GnuTLS 用于加密库。问题是 GnuTLS 是用 C 语言编写的。我有两个问题:1. 是否可以使用 JNI 将 Java 与 GnuTLS 一起使用?2. 是否可以在服务器端使用内部 Java 加密包,在客户端使用 GnuTLS 和 C?它们会兼容吗?
最佳答案
TLS 1.0 , 1.1和 1.2是 IETF 标准,它们是专门设计的,因此它们的实现可以互操作(实际上,大多数 SSL/TLS 库也至少包括对 SSLv3 的支持)。当您从不共享其 SSL/TLS 堆栈的浏览器(例如 IE、Firefox 和 Safari 使用不同的 SSL/TLS 库)连接到网络服务器(例如,运行由 OpenSSL 支持的 Apache)时,这种情况一直发生。
或许可以将 GnuTLS 与来自 Java 的 JNI 结合使用,但我不确定是否值得付出努力。 Java 已经有了 JSSE .
可能导致问题的是您计划使用的 TLS 版本以及对密码套件的支持。
Oracle JRE 使用 Sun Provider。 Java 6 的 SunJSSE 提供程序文档中记录了支持的内容和 Java 7 (特别是,Java 6 不支持 TLS 1.1 和 1.2)。还有tables showing what is supported by various implementations on Wikipedia ,但您可能还必须查看要用于准确数据的特定版本的文档。
例如,可以从针对 GnuTLS 编译的 cURL
连接到运行在 Java 6 JRE 上的 Java 服务器(例如 Jetty)。
关于java - 如何在 Java 和 C 中使用 GnuTLS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9457179/
我是一名优秀的程序员,十分优秀!