js用SHA1withRSA加签

js用SHA1withRSA加签最近开发项目中无意用到SHA1withRSA签名算法,纵观百度了下,资料比较少,通过源码例子查询使用方法,对此有些了解,所有多此总结下。 SHA1WithRSA:用SHA算法进行签名,用RSA算法进行加密。 具体的对于SHA和RSA算法这里不做详细介绍,只简单的介绍如何使用SH…

前言:

最近开发项目中无意用到SHA1withRSA签名算法,纵观百度了下,资料比较少,通过源码例子查询使用方法,对此有些了解,所有多此总结下。

SHA1WithRSA:用SHA算法进行签名,用RSA算法进行加密。

具体的对于SHA和RSA算法这里不做详细介绍,只简单的介绍如何使用SHA1withRSA都数据进去签名算法。

主要是利用了jsrsasign这个库,很强大。

第一步:首先生成秘钥对(可以自动生成,或者后台提供)

作为前端我们就不需要明白怎么生成秘钥,不会的百度搜索。这里提供一个网址web.chacuo.net/netrsakeypa…

这里我们已经拿到了公私钥,例如:

注意公私钥都必须带有头部尾部。

公钥:

-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCU4aJUKL4FKuMQ6WMt3slH8uoh
w4Agrd5sBA6iXKZFyAosdMfwn/CB64xwVnZSUeHYzTKlAkGYACOY9JWp/K3eHTXV
80oY98FwZmcVpM5y5YTfTvW/zT4kZ9eF1EFrfixX2t2vLKuXH/2Pd78+284kl2SB
batPq/N/du/1Ruq0PwIDAQAB
-----END PUBLIC KEY-----

私钥:

-----BEGIN PRIVATE KEY-----
MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAJTholQovgUq4xDp
Yy3eyUfy6iHDgCCt3mwEDqJcpkXICix0x/Cf8IHrjHBWdlJR4djNMqUCQZgAI5j0
lan8rd4dNdXzShj3wXBmZxWkznLlhN9O9b/NPiRn14XUQWt+LFfa3a8sq5cf/Y93
vz7bziSXZIFtq0+r83927/VG6rQ/AgMBAAECgYBWpKlPyRYs87SJlwl9HHaPRLM1
Sw0593XF7uaFXt31JmGlVaE2TB4vveFRT0A00Cpbfa/Hj/SUfSA6V7zx3HdiNOoS
O23s4ean0fraK4vGuyXL/LtAWAE37X59ciLnZCmGxpEr6PmvbIyxRHG0zZFwfr4G
Tr2BlpYpBJ7iMxM1wQJBAMNdbe+E8Rx3sT3VZcdQ3JGOlBdylCrVb09mu5dmcwxu
dCNxUjwt175GRMmW/6Ql384CqYE19r50INFaI/TJFdcCQQDDFuNtT3MxzAD8kslo
qO6jx2wW18ogNdtc9+zlFd2hBAZZshlEVAW8iyQCyll65cqf/egN8I1/ElBfIrMM
qjfZAkBepXbLITbGOd5uPGIQi8Yv5kksit/pWHmSmAytrn5yOVieixnx+auZjOVq
XHMBDTA91+BSrtgZMJ1tjyP4RSsFAkBSw3QKXKlXF9/XRwKRFxHeg2zUqAlE7vQ4
Fan3afZTJ9z10nurpCWm3jSRxnx9id0TUOlQeJveq8tTAOqK1e/JAkEApLGftZP7
6EVr0sz2z4FnuAtp7YmbDxA7nKLKNYjolLyrw5gM+mGIcYAyxfPUz+ddTNtdfuh0
sjFkxWcUVBWYnQ==
-----END PRIVATE KEY-----

第二步:利用私钥对数据进行加签

import Jsrsasign,{KJUR,hex2b64} from 'jsrsasign';

// 用自己的私钥对url进行签名
export function signature(url){
  // 私钥加签
  let privateKey = '-----BEGIN PRIVATE KEY-----MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAKpHfFmxCZuMHDoeNod+TTSeE4Y6TusQ8UB4kquw0kQDQfNTpuEP0Y2o0Oc6TPI7F4zJsy266bWp3zznvOlLXwObFcz1aAGXHHOybgu4ma+nwYvX5/9R2HRaExTPABe9GjhpMPLWWoJAsCLHm3J0tzMVI7rq1bcMD3c4lI3omdXhAgMBAAECgYEAibVAWqTzWSlplpLilJdPRvNkZNR5CF/uS653J4Tbt4dO6cNIHZGWblMNh0K+AdRKSmDAmIYmBfW4hWAAhkefMU+eHP4fzPZ1D/FC7EMceRCYmfQZST30QBEj93Qb8qhlP9bn/KZ3UGdrEHTERGOEaV5cmJT15iJx7jbyz/YNRsECQQDhm4j6ii+b7PuLCGz49Ajv3WxMH/TlZFWaWjsIHjrA1moSiCN4zeLZOfEhpQzKz8liMDrotbBoo+lIxYxdFHGJAkEAwTfbwUTBB/h3k9pE7suA/XcnUHPA/ZJNpHc2LSDwyr9FlonNjUzBQnTAFrQAeWQ0LsGjoyJTGN5UME4GBypjmQJAOHTDgm6yG0Lib5hcLLBkzCGMyD/2+LBy+3046H8oFLmTMa//sGtVKSbmwJSc7uOwcXHATBurWYQrDJri1SgYgQJBAIAXfukuomWdU/DB18cTRI1ES9zrEDtKnYx1t4XNe7R9fy2gZ5PQGaLr8VhbtqDDTFDe8JO6sqoe4mMvppFjiakCQC099wyiYfj8edUGmKRlWI4lGkckj0pKpwiIeVJ0fzAvhHzGTvySIj0fngqKy6bs4GnDNJQoQ4UnPRi7srC0voA=-----END PRIVATE KEY-----';
  let sig = new KJUR.crypto.Signature({"alg": "SHA1withRSA", "prov": "cryptojs/jsrsa","prvkeypem": privateKey}); 
  sign = hex2b64(sign); 
  return sign;
};

利用es6语法,应该比较容易理解。

url就是你需要加签的数据,hex2b64就是把结果转成base64格式。

结果得到sign。

第三步:利用公钥对签文进行验证

import Jsrsasign,{KJUR,hex2b64} from 'jsrsasign';
// 用公钥对签名进行验签

export function verify(url,data) {
  try {
    let publicKey = '-----BEGIN PUBLIC KEY-----MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCEO23dYaK65jtxrtBHoT8nVlfw3kGw6fAJBJ5GuFL01QQ1yI42Fl+3fxHJauZiMoXBbB+WdeBh4iypp9U9cXLuf5UldNOFKY667sy4HLSYyB6GcLrSpEutRSTbMC2wwu2YOQt73cUob9li2usF/+p8EuJ++unySr5V151lqCJrxwIDAQAB-----END PUBLIC KEY-----';
    let sig = new KJUR.crypto.Signature({"alg": "SHA1withRSA", "prov": "cryptojs/jsrsa","prvkeypem": publicKey});
    sig.updateString(url);
    let result = sig.verify(data);
    return result;
  } catch(e) {
    console.error(e);
  }
};

url:加签的数据,

data:加签之后得到的签文。

主要是verify方法进行验证。

总结:如果有疑问或者报错的话可以查看github上的资源,里面有例子。github地址:github.com/kjur/jsrsas…

有问题欢迎指正。

今天的文章js用SHA1withRSA加签分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/19312.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注