RSA中e n生成publicKey

有的小伙伴在对接的时候,遇到对方提供RSA的e n值后,无所适从。

介绍下 RSA中e n生成publicKey

1、首先介绍Java里面 exponent + modulus 生成密钥的示例

// 系数
String modulus = "21330634227865858248547732230213326796059798755767117022480868343834112728121984949364474039682511821291005459355824408194322449820429949761626773150661940244698885082336953048639538539221761574334996089292019399728342663302031711145242545287132847203410792305843030027480036740094719887806358969850535921665074928021439069804323347388539217469163012282489425087035482024027310610563829655305073926463856787698917910634027007327194209716815756580502107781551245065651312797085643490047332324369047284014877706912613432148781948805785078164265438082438960238342363126313096095137748510060607006167571409494629737071119";
// 私有指数
String privateExponent = "17052920483616945802743639203347682136087356699416548350944697133021720589548244189343458700201802407261866427170744221476926475668578158716613106374350087693680720585378676442779193161481071393651033539868563779687303134123421112863631809783390121555388636221864591227242459144613313911252061764596319317022515450384712743687786278874786001191239129426492973271045297511832776208937626008179223849422563621849000173566300582651778375960466748385245627442384825880766181208804571273807390738200438475806292235479945127766356494031637226774042823363923324696913386972625296236777640818792883503584370967398335518889953";
// 共有指数
String publicExponent = "65537";

RSAPublicKeySpec publicSpec = new RSAPublicKeySpec(new BigInteger(modulus), new BigInteger(publicExponent));
RSAPrivateKeySpec privateSpec = new RSAPrivateKeySpec(new BigInteger(modulus), new BigInteger(privateExponent));

2、其次,e n的其实是publicExponent和modulus的base64格式

{
    "kty": "RSA",
    "e": "AQAB",
    "n": "qPieq1PFAJqfvAnvS6aKOV8jZAvdxk-ZD2PiV4dAJykMp1iSuiPVw88x4p0TN-_ouElL0Qo35Kxl76mnhBjmyJxV7NciYyIlc0bj93kONhPi0I82DK8ChDdYYMZ9vZexhg6pdpIX3dc33IOqvjHMXoFJ-Gqq_FS9p5hjry_TyiXkvwsGvufkhfo4XPhK6eEF3WNHaPZKdTygK7ghC23bFK2vKQsf6R8dyc4IAHMCjypCq6f1QZbvb2ptUeE6Ut9452tuhzhXIpM-nOpf-sHi5x-togVVaqrlIlAsNEaJLHBS9RZaZP8rSauLwxk2rs5LqxztenNvbe6fu1gLq1SCDw"
}

 3、所以,publicExponent + modulus 这样就可以很简单的转换成公钥了

BigInteger publicExponent = new BigInteger(1, Base64.getDecoder().decode("AQAB"));
BigInteger modulus = new BigInteger(1, Base64.getDecoder().decode("qPieq1PFAJqfvAnvS6aKOV8jZAvdxk-ZD2PiV4dAJykMp1iSuiPVw88x4p0TN-_ouElL0Qo35Kxl76mnhBjmyJxV7NciYyIlc0bj93kONhPi0I82DK8ChDdYYMZ9vZexhg6pdpIX3dc33IOqvjHMXoFJ-Gqq_FS9p5hjry_TyiXkvwsGvufkhfo4XPhK6eEF3WNHaPZKdTygK7ghC23bFK2vKQsf6R8dyc4IAHMCjypCq6f1QZbvb2ptUeE6Ut9452tuhzhXIpM-nOpf-sHi5x-togVVaqrlIlAsNEaJLHBS9RZaZP8rSauLwxk2rs5LqxztenNvbe6fu1gLq1SCDw"));
RSAPublicKeySpec publicSpec = new RSAPublicKeySpec(modulus, publicExponent);

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值