实际项目中,发现前端在生成公钥对象的时候并不是使用这种方式,而是通过对应的模数跟质数来构造公钥对象的,这样的话,需要进一步将生成的公钥取出对应的模数和质数。openssl、java api都可以将质数跟模数取出来。

正常生成公私钥如下:

1.通过openssl工具取出模数和质数

命令行使用 openssl rsa -in priKey.pem -noout -text,得到下图中的modules以及publicExponent

这里我们都取十六进制的。这样对应的模数(前面的00去掉即可)跟质数就出来了。

2.通过java api取对应的模数跟质数

packagecom.wangjinxiang.genkey.util;importjava.security.interfaces.RSAPublicKey;importorg.apache.commons.codec.binary.Base64;public classKeyModulesAndExponentUtil {private static String PUBKEY_TEXT = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxdHDlJrjF+anpWRbiLuN2Hu9oPaABcVKAJSCq3UEreIn33ldx645l+9RDat6THqJEeTjRt9orogXwpAeFkDqje0YFjTu4v3eyLnkGjg3oDozYCoY9c7vfQ/BMw3X+2Wy0lYpRg23qis0lWB/ZdoVnj6SP0fcXBiqJSk+/deZNVreUvozl0X1o17EyJsKGJd2Uk0ltC3DfRve0TK1TJp4pssEDLRqFPAVJSJjFEe2lr6IUKDlv9ArPRZXh67zxxe1t/qW+tJSJjhaQKFLwpYVmpNnPNuYJ7gLqLPxDiqosFVJK0q3On2IFbviaXMhwGv85GD2Exlmn9KDW4p1box6QQIDAQAB";public static void getModulesAndExponent() throwsException {try{//解密由base64编码的公钥,并构造X509EncodedKeySpec对象

java.security.spec.X509EncodedKeySpec bobPubKeySpec = newjava.security.spec.X509EncodedKeySpec(

Base64.decodeBase64(PUBKEY_TEXT));//RSA算法

java.security.KeyFactory keyFactory = java.security.KeyFactory.getInstance("RSA");//取公钥匙对象

RSAPublicKey pubKey =(RSAPublicKey) keyFactory.generatePublic(bobPubKeySpec);

System.out.println("modules: 0x" + pubKey.getModulus().toString(16));

System.out.println("publicExponent: 0x" + pubKey.getPublicExponent().toString(16));

}catch(Exception e) {throwe;

}

}public static voidmain(String[] args) {try{

KeyModulesAndExponentUtil.getModulesAndExponent();

}catch(Exception e) {

e.printStackTrace();

}

}

}

打印出来的结构跟使用openssl工具是一样的。

至此,这两种方法都可以正确取出模数(modules)和质数(publicExponent),这时,就可以把获得的模数和质数给到前端了,我也可以用获得的模数和质数模拟前端加密处理了。

rsa java模数_RSA公私钥获取模数和质数相关推荐

  1. Openssl 1024bit RSA算法---公私钥获取和处理(一)

    1.简介 使用OpenSSL生成公私钥文件,然后再将文件中的信息读出的操作. 由于要对设备升级,需要用到RSA算法对一部分验证信息进行加密. 2.使用OpenSSL获取公私钥 我在window系统尝试 ...

  2. RSA加密算法及使用公私钥实现数字签名

    一, 传统对称加密算法 传统的对称密码算法可以有效地保护小范围内的点对点传输数据的机密性,但是在参与通信的节点数量增多后,密钥管理成为了瓶颈问题. 在密码学中,恺撒密码,或称恺撒加密.恺撒变换.变换加 ...

  3. rsa java模数_RSA加密:利用模数和指数生成公钥加密

    引子 目前做一款金融产品,由于涉及到资金安全,采用动态公钥的方式,即客户端每次登录服务端返回一个不同的XML串,由公钥的模数和指数构成,我需要用这个串生成公钥加密相关信息. 服务端返回的XML串形如: ...

  4. js rsa java解密_RSA使用js加密,使用java解密

    RSA算法使用javascript加密,使用java解密,提供完整代码及例子下载. javascript加密介绍参见另一篇:javascript使用RSA加密提交数据.本篇的例子使用的js是上一篇中提 ...

  5. (PKCS1) RSA 公私钥 pem 文件 提取 公私钥 e d 和 模数 n

    参考链接:RSA公钥文件(PEM)解析 参考链接:OPENSSL中RSA私钥文件(PEM格式)解析[一] 参考:使用openssl命令剖析RSA私钥文件格式 RSA PKCS8 与 PKCS1 公私钥 ...

  6. RSA公私钥格式分析及其在Java和Openssl之间的转换方法

    文章目录 PKCS#1和PKCS#8 X.509公钥证书 ASN.1抽象语法标记 DER和PEM编码 OID对象标识符 用openssl命令生成PKCS1#格式的RSA密钥对 生成私钥 从私钥中导出公 ...

  7. 非对称加密算法RSA公钥私钥的模数和指数提取方法

    生成非对称加密算法RSA公钥.私钥的方法: 1. 通过OpenSSL库生成,可参考  https://github.com/fengbingchun/OpenSSL_Test/blob/master/ ...

  8. Java中使用OpenSSL生成的RSA公私钥进行数据加解密

    本文出处:http://blog.csdn.net/chaijunkun/article/details/7275632,转载请注明.由于本人不定期会整理相关博文,会对相应内容作出完善.因此强烈建议在 ...

  9. Java OpenSSL生成的RSA公私钥进行数据加解密详细介绍

    最近用到企业微信向银行卡转账功能,因为需要使用到:标准RSA算法 故在网上了解一下相关的信息 SA是什么:RSA公钥加密算法是1977年由Ron Rivest.Adi Shamirh和LenAdlem ...

最新文章

  1. 作为零基础如何自学软件测试?
  2. 收集了7000个地震回波后,机器学习发现了地下上千公里处的热岩床
  3. virtualbox在装centos5.6时自协把virtualbox add-on 装上了
  4. 592zn rom/apk 自动签名工具_ios超级签名服务器
  5. hdu 2159 FATE 二维背包
  6. linux 安装mysql5.7.12_Linux系统上安装mysql5.7.12
  7. C/C++:mongoose.c实现多表单域文件上传
  8. leetCode 6. ZigZag Conversion 字符串 (上传费劲)
  9. java集群_「Java知识」MyCat的图文视频讲解,MyCat分片集群分表分库策略
  10. 如何查找MySQL中查询慢的SQL语句
  11. 在Axapta中实现split函数
  12. 继承(初识继承,继承的进阶)
  13. Spring的事务传播机制(大白话)
  14. java find 方法,findOne方法是findOne(Example
  15. 搜索引擎优化的一般内容应包括什么
  16. C++11中的时间库std::chrono(引发关于时间的思考)
  17. linux网卡 命令 ncmil,Linux常用性能检测命令解释
  18. 将CDLINUX装入U盘
  19. 中频电路与射频电路的衔接
  20. “杭州最惨创业者”事件初步法律分析

热门文章

  1. esxi 安装网卡驱动
  2. mysql集群 clu_MySQL高可用之PXC简介
  3. cupsd进程_关于Linux操作系统进程操作(ps)命令简介
  4. opencv java水平投影_使用OpenCv中Mat进行水平投影与垂直投影并实现字符切分
  5. docker 随笔记录
  6. html5文本超过指定行数隐藏显示省略号
  7. C#设计模式之单例模式
  8. WPF Bind 绑定
  9. ES6扩展运算符的几个小技巧
  10. 1到n的整数中,1出现的次数