NodeRsa 从公钥中提取modulus 和 exponent

首先使用nodeRsa库来处理。

从公钥中提取modulus 和 exponent。格式跟c#代码导出来的一样
 

let publicKey = 
'-----BEGIN PUBLIC KEY-----' + 
'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCF2sIZ8bqs4J8GpiB2feLaak7E' + 
'LZliFCFYnTwpETfryV5PJO6NnVAx0mOcNC7OjHjVDw8VthA/dMq6KWD4V05U9XGk' + 
'WniDWuGzges2isplzb6WXQ23/gkdXSlkgH05FICpvj8YtxCkYnT/Q5S0ZCkBIC3V' + 
'DEJpm0g11t25n1o4iQIDAQAB' + 
'-----END PUBLIC KEY-----';

public static getPublickeyModulus(publicKey: string) {
    const key = new NodeRSA(publicKey); // 导入公钥
    key.setOptions({encryptionScheme: 'pkcs1'}) //设置公钥pkcs1
    var bytes = key.keyPair.n.toBuffer() //key.keyPair中有很多属性,n和e
    // key.keyPair中有很多属性,n和e 分别对应 modulus 和 exponent

    // 这里生成的对应的值分别对应的c# xml 对象中的 modulus 和 exponent
    var len = bytes.byteLength;
    var binary = '';
    for (var i = 1; i < len; i++) {
        binary += String.fromCharCode(bytes[i]);
    }
    let b_utf8 = CryptoJS.enc.Latin1.parse(binary);         // acsii 值转换成base64
    let s_base64 = CryptoJS.enc.Base64.stringify(b_utf8);  // 值转换成base64

    // c# 中的公钥可以转成xml格式,
    
    // window atob() //ASCII to Base64 //window.atob 和 btoa 怕不稳定,暂用上面的方法转
    // window btoa() //Base64 to ASCII
    // let n = window.btoa(binary);

        //hdrCGfG6rOCfBqYgdn3i2mpOxC2ZYhQhWJ08KRE368leTyTujZ1QMdJjnDQuzox41Q8PFbYQP3TKuilg+FdOVPVxpFp4g1rhs4HrNorKZc2+ll0Nt/4JHV0pZIB9ORSAqb4/GLcQpGJ0/0OUtGQpASAt1QxCaZtINdbduZ9aOIk=
// AQAB
    //modulus 如上例子, key。keyPair.e为65537
    return {modulus: s_base64, exponent: key.keyPair.e}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值