java publickey_Java中RSAPublicKey在不同平台的差异性
最近在逆向某Android App的时候复制了里面一段Java写的RSA解密代码,把它放在Windows上执行,结果发现解密失败,刚开始以为是密文数据或者公钥数据弄错了,调试了下发现密文数据或者公钥数据都没问题,问题发生在通过公钥数据生成公钥,在Window上生成的公钥是Sun RSA public key,在Android上生成的公钥是OpenSSLRSAPublicKey,原因可能和Jdk版本有关系:Window上使用的是SunJdk,Android上使用的是OpenJdk。
Windows:
public class ExampleUnitTest {
@Test
public void testGetPublicKey() {
try{
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
keyPairGenerator.initialize(1024);
KeyPair keyPair = keyPairGenerator.generateKeyPair();
RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();
System.out.println(publicKey);
}catch (Exception e){
}
}
}
Sun RSA public key, 1024 bits
modulus: 95213884349438225170527524041975750351683444678161946275254426695337973208253569775466173664279298747653058061430975492241277502919945076896996944444736550396126983267986003483379392361465058231916774917978538137429201243314904997369770567867017186086453893426267549310093584324574550363215845297101263978509
public exponent: 65537
Android:
public class ExampleInstrumentedTest {
@Test
public void testGetPublicKey() {
try{
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
keyPairGenerator.initialize(1024);
KeyPair keyPair = keyPairGenerator.generateKeyPair();
RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();
Log.d("Test", "testGetPublicKey: "+publicKey);
}catch (Exception e){
}
}
}
testGetPublicKey: OpenSSLRSAPublicKey{modulus=cbeecbec35b18cde50f2f201e441f5d9b57dacb2ba780a2f93152295d7661e822a570035e55217234d3f6070794faf28d5c3975fd62e1cfbf714cd379c8ee2166544a555e3f89c0be9074f8acccced9a9e1a8071a6c30abeea3bc5c8565dd34fd34794da50cb74e68c5f93e9f0925b60f87c89aacb25a9e357fd819ef0cf5a11,publicExponent=10001}
java publickey_Java中RSAPublicKey在不同平台的差异性相关推荐
- 如何在Java代码中使用SAP云平台CloudFoundry环境的环境变量
本文使用的例子源代码在我的github上. 在我的公众号文章在SAP云平台的CloudFoundry环境下消费ABAP On-Premise OData服务介绍了如何通过Cloud Connector ...
- Java代码中换行符怎么用
可以使用Java中\n和\r的换行,不过也是有区别的,如下:1.\r 叫回车 Carriage Return2.\n 叫新行 New Line但是都会造成换行,使用System.getProperty ...
- 如何优雅地在 Java 8 中处理异常
2019独角兽企业重金招聘Python工程师标准>>> 前言 Java 8 引入的流 (Stream) API 和 lambda 表达式为我们打开了新世界的大门,自此之后我们也可以在 ...
- 如何解决java.lang.NoClassDefFoundError:Java 9中的javax / xml / bind / JAXBException
本文翻译自:How to resolve java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException in Java 9 I have s ...
- Java开发中Websocket的技术选型参考
1. 前言 Websocket是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议.WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据 ...
- java学习笔记1--开发环境平台总结
本文地址:http://www.cnblogs.com/archimedes/p/java-study-note1.html,转载请注明源地址. 1.Java程序设计语言 Java程序设计语言是一种高 ...
- java语言中解释方式是什么意思,Java语言快速入门·简答T
1 面向对象与面向过程有什么区别? 面向对象编程:既然面向的是对象,那么强调的自然就是--对象,那么对象多了,就会抽象出相应的类(对象是类的实例化),所以 · 程序是由类组成 · 程序运行的时候去调用 ...
- Shell-通过shell启动Java类中的main方法 + 通过Shell启动jar包
文章目录 概述 shell启动Java类中的main方法 启动脚本分析 启动脚本 shell启动jar包 概述 Java程序 运行在linux主机上, 通过shell脚本启动为进程. Java程序中 ...
- java aes密钥生成_如何在Java(Android)中生成与.Net中相同的AES密钥?
我需要从.Net WebService提供的salt和密码生成 Java( Android)中的AES密钥.我需要使用与.net生成的密钥相同的密钥和相同的密码和盐(使用Rfc2898DeriveBy ...
最新文章
- 周志华:严肃的研究者就不该去触碰强人工智能
- Android模拟器环境下SD卡内容的管理[转]
- property、staticmethod、classmethod与__str__的用法
- JDK5--Annotation学习:基础(一)
- 基于Open WebRTC Toolkit(OWT)的8K全景视频低延时直播系统
- python中文注释
- Pseudo code:伪代码
- Scrum与项目管理亲体验
- project软件_Project软件操作篇——第三篇 优化计划
- 如何在软件里显示编译时间?__DATE__和__TIME__
- 3. Vue入门实战教程之vue-element-admin初体验
- 进阶实验5-3.2 新浪微博热门话题 (30 分)
- intel DQ77KB 主板使用说明书
- 东子破解的java设计模式状态模式
- linux uvc协议_UVCCamera-master
- 如何区分电梯卡为id卡ic卡_门禁卡ID卡和IC卡从外表怎么区分?
- maya python 的简单使用
- js实现彩票机选效果
- uniapp微信小程序实现按住说话功能
- Unity中利用材质自发光实现物体闪烁效果
热门文章
- ABAP入门程序,你会了嘛?
- SAPABAP性能优化技巧—使用二分查找(Binary Search)选项
- 在让元宇宙“圆梦”这条路上,交互技术卡在哪里了?
- python 执行shell命令行效率提升_在python脚本中执行shell命令的方法
- nofollow标签_nofollow标签在网站中的运用
- python中的reduce() 函数
- Python正则表达式的7个使用典范
- Python线程、进程知识整理
- linux驱动双摄像头,详解linux 摄像头驱动编写
- c#后台如何导出excel到本地_C#后台导出Excel