美文网首页
Java中RSAPublicKey在不同平台的差异性

Java中RSAPublicKey在不同平台的差异性

作者: 土豆吞噬者 | 来源:发表于2020-01-01 21:49 被阅读0次

最近在逆向某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中RSAPublicKey在不同平台的差异性

    最近在逆向某Android App的时候复制了里面一段Java写的RSA解密代码,把它放在Windows上执行,结...

  • 基于小程序技术栈的微信客户端跨平台实践

    一、前言 二、微信客户端的跨平台实践 减少平台差异性:应该最大限度减少不同平台上开发的差异性,尽可能减少各平台特有...

  • ios和andriod交互规范的区别

    【为什么要区别】 按照平台规范来设计APP,尊重不同平台的用户习惯,提升用户体验 ,保持不同平台差异性,同时差异不...

  • Class文件

    Java的跨平台特性建立在Java虚拟机之上。 Java虚拟机在不同平台上有不同的版本,但是他们都能执行同一cla...

  • JAVA学习笔记1

    1.java的跨平台java能跨平台是因为JVM,java语言可以跨平台,JVM不能跨平台对于不同的系统,有不同的...

  • 标题差异性

    一、同一平台差异性标题 二、不同平台之间的标题差异性 制造紧迫感 古希腊哲学家赫拉克利特有言:“人不可能两次踏入同...

  • 2019-04-21

    平台无关性 Java源码首先被编译成字节码,再由不同平台的JVM进行解析,Java语言在不同平台上运行不需要重新编...

  • 深入分析 Java 中的中文编码问题http://www.ibm

    编码问题一直困扰着开发人员,尤其在 Java 中更加明显,因为 Java 是跨平台语言,不同平台之间编码之间的切换...

  • 【HTML5】video 在不同平台下的差异性

    时间:2016-09-04 00:03:30转载:http://imweb.io/topic/560a6015c2...

  • 精选Java面试55题

    1.简单讲一下java的跨平台原理?    跨平台就是让我们的程序在不同的操作系统上执行不同的代码。通过Java虚...

网友评论

      本文标题:Java中RSAPublicKey在不同平台的差异性

      本文链接:https://www.haomeiwen.com/subject/ouwgoctx.html