`
luckliu521
  • 浏览: 258928 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

openssl和java关于rsa的交互

 
阅读更多
两个版本自加解密时均能工作。但是交互时存在错误:openssl加密java解密,信息后附有乱码;java加密openssl解密,信息现实不正常。
查阅大量资料后,无法确定问题,最后从java解密后的乱码入手分析,发现是填充的方式不同。
以RSA_NO_PADDING 模式为例,假设rsa 1024bit,明文最后一块为A,差n个字节就能补充称128字节
openssl的填充方式是在A后补充0,然后是n-1个乱码(或许有意义)
而java却是在A前补充n个0
故我以这样的方式来解决两个版本的交互:预防两个版本的差异填充,我们来手动填充。例:设置为RSA_NO_PADDING
模式,加密前在明文后补‘\0'使长度变为128的倍数,解密后去除末尾的所有'\0'。
希望能对遇到同样问题的人有所启发
分享到:
评论

相关推荐

    java调用openssl生成证书

    此外,`openssljava.jar`可能是封装了上述调用OpenSSL功能的Java库,这样可以更方便地在Java代码中生成和管理证书,而不需要直接操作系统命令。使用这样的库可以简化代码,降低安全风险,并提供更好的跨平台兼容性。...

    linux下java调用c++库 rsa加解密.rar

    1. C++基于OpenSSL实现的RSA加解密动态库:这个库可能包含了一系列的C++函数,如`encrypt_rsa()`和`decrypt_rsa()`,它们分别调用了OpenSSL的RSA加密和解密接口。动态库的创建通常涉及编译源代码,链接到OpenSSL库,...

    JAVA - RSA- JS 加密

    RSA算法是一种非对称加密算法,它在信息安全领域有着广泛的应用,特别是在JAVA和JavaScript中用于跨平台的数据安全传输。此主题涉及到的知识点包括RSA的原理、JAVA和JavaScript实现RSA加密的过程,以及如何在两者...

    Java与.NET RSA加密解密(签名,验签)实例代码

    - `opensslkey.cs`可能包含了与OpenSSL库交互的代码,用于处理RSA密钥的生成、导入和导出。OpenSSL是一个开源的密码学库,支持多种加密算法,包括RSA。 - `RSA.cs`很可能是核心的RSA操作实现,包含加密、解密、...

    OpenSSLForJava.zip

    通过分析这个文件,我们可以学习到Java如何与C或C++编写的OpenSSL库进行交互,以及如何在Java环境中实现加密和安全通信。 `使用说明.txt`文件则提供了关于如何使用这个压缩包的详细指导。它可能涵盖了如何配置环境...

    Delphi(delphi7-XE)标准RSA加密,解密,签名.与C,Java,php等通用

    Delphi提供了一些库和组件,例如 Indy 和 OpenSSL,用于实现RSA算法。这些库提供了密钥对的生成、加密、解密和签名的功能。在Delphi7到XE版本中,你可以使用这些库来创建RSA对象,生成密钥对,然后使用这些密钥进行...

    Delphi标准RSA加密,解密,签名.与C,Java,php等通用

    4. **库的选择**:Delphi虽然内建了一些加密支持,但为了更丰富的功能和更好的性能,可以考虑使用第三方库,如OpenSSL、Crypto++等,它们提供了完善的RSA实现和更多的加密算法。 通过以上介绍,我们可以看出Delphi...

    支付宝RSA生成工具java版本

    【支付宝RSA生成工具java版本】是一款专为支付宝接口开发设计的工具,主要功能是生成RSA加密算法的1024位和2048位密钥对,这对于在与支付宝进行安全交易时设置和管理安全凭证至关重要。RSA是一种非对称加密算法,...

    PHP和JAVA AES交互

    在IT领域,跨平台通信是常见的需求,而PHP和Java作为两种广泛应用的编程语言,有时需要进行数据交换和交互。本篇文章将详细讲解如何利用AES(Advanced Encryption Standard,高级加密标准)加密技术在PHP和Java之间...

    安卓NDK RSA 加解密实现

    1. 在C/C++层编写RSA加密和解密的函数,调用OpenSSL库提供的API,如`RSA_public_encrypt()`和`RSA_private_decrypt()`。 2. 在Java层创建本地方法声明,通过`@Override`的`System.loadLibrary("native-lib")`加载.so...

    解决java和net之间SHA256withRSA签名问题

    在实际应用中,我们可能需要将这些步骤封装到一个通用的接口或服务中,以便在Java和.NET之间进行无缝交互。这可能涉及创建REST API、Web服务或使用诸如gRPC这样的跨语言通信框架。 总结,解决Java和.NET之间的SHA...

    android jni openssl

    在Android上使用OpenSSL,开发者需要将预编译的OpenSSL库与应用的JNI层集成,以实现Java代码与C/C++代码之间的交互。 在提供的文件列表中,"android-config.mk"是一个构建文件,通常用于配置Android编译环境,确保...

    simple-ssl:一个简单的 Java 接口,用于使用 OpenSSL 兼容的加密组件

    3. **证书管理**:simple-ssl简化了与OpenSSL证书和密钥的交互,支持PEM和DER格式的证书导入和导出,以及PKCS12格式的密钥库操作。这使得开发者能更方便地管理和配置服务器和客户端的数字证书。 4. **性能优化**:...

    nginxRSA加密,java解密例子

    1. **生成RSA密钥对**:使用OpenSSL工具生成一对RSA密钥,包括一个公钥和一个私钥。公钥可以安全地分享给Nginx,而私钥应保留在Java应用程序中。 2. **在Nginx中使用公钥加密**:在Nginx配置中,可以编写一个自定义...

    Android可用的openssl相关so,支持x86 armeabi armeabi-v7a

    OpenSSL是一个开源的加密库,包含了大量的加密算法,如RSA、AES、MD5等,同时也提供了SSL/TLS协议的支持,使得应用程序能够实现安全的数据传输。 标题"Android可用的openssl相关so,支持x86 armeabi armeabi-v7a...

    jni_demo.zip_Android jni_DEMO_OPENSSL 3DES_gentle5qv_jni android

    在Android平台上,JNI(Java Native Interface)是一种技术,允许Java代码和其他编程语言(如C/C++)进行交互。本示例“jni_demo.zip”提供的是一个Android JNI DEMO,专门用于数据的本地加密和解密。它利用了C++...

    java安全

    虽然Java标准库已经包含了大部分加密功能,但在某些情况下,开发者可能需要利用OpenSSL的强大功能,例如,当需要与非Java环境交互,或者使用OpenSSL特有的加密算法时。Java可以通过JNI(Java Native Interface)或者...

    ziliao.rar

    以上所述,Vue.js的RSA加密和Java的RSA解密涉及了前端与后端的安全交互,确保了数据在传输过程中不被窃取。在实际开发中,还需要注意错误处理、密钥的安全存储以及遵守相关的安全最佳实践,比如定期更换密钥,防止...

    收藏 Java c++通过des加密的结果不一样【已解决】

    但是,在调试过程中发现,即使使用相同的明文和密钥,Java和C++生成的加密结果也不一致。这给项目的正常推进带来了很大的困扰。 #### 解决方案分析 为了解决这个问题,我们首先需要理解DES算法的基本原理及其在不同...

    JAVA与C加密

    在Java和C编程中,加密和解密功能的实现是跨平台通信或系统间安全交互的关键环节。本篇文章将深入探讨Java和C语言之间的加密规则,以及如何实现Java加密、C解密的互通性。 首先,我们需要了解加密的基本原理。加密...

Global site tag (gtag.js) - Google Analytics