vue生成密钥对、注册唯一地址、签名

vue前端开发会需要用到数据加密,本文以sha256非对称加密为例,本人场景用于基于fabric网络系统业务开发钱包注册以及账户交易时私钥加密等。
安装jsrsasign

cnpm install jsrsasign

jsrsasign的API文档
https://kjur.github.io/jsrsasign/api/symbols/KEYUTIL.html#.generateKeypair
注册

import jsrsasign from 'jsrsasign'
Vue.prototype.RSA = jsrsasign;

获取密钥对,pem格式的公、私钥以及十六进制私钥。API中未找到十六进制的公钥,但不影响使用

let key = this.RSA.KEYUTIL.generateKeypair('RSA', 1024)
let pubKeyPEM = this.RSA.KEYUTIL.getPEM(key.pubKeyObj)
let prvKeyPEM = this.RSA.KEYUTIL.getPEM(key.prvKeyObj, "PKCS5PRV", "password")
let prvKeyHEX = this.RSA.KEYUTIL.getDecryptedKeyHex(prvKeyPEM, "password")
this.prvKeyPEM = prvKeyPEM
this.pubKeyPEM = pubKeyPEM
this.prvKeyHEX = prvKeyHEX

生成钱包地址,我使用的是对公钥进行hash160加密然后做一次base64加密,可以根据自己需要修改加密规则,也可以仿照一下bitcoin的生成流程。
安装base64、ripemd160、sha256

cnpm install js-sha256
cnpm install crypto-js/ripemd160
cnpm install js-base64

crypto-js有多种加密算法,有兴趣的可以了解一下。

let sha256 = require("js-sha256").sha256
let ripemd160 = require("crypto-js/ripemd160")
let base64 = require("js-base64").Base64
let sha256PubKey = sha256(pubKeyPEM)
let hash160PubKey = ripemd160(sha256PubKey)
let purseID = base64.encode(hash160PubKey)
let purseIDHex = strToHexCharCode(purseID)

这里的strToHexCharCode()函数是我自己定义的字符串转十六进制。
对数据进行签名

let signature = new this.RSA.KJUR.crypto.Signature({"alg":"SHA256withRSA"})
let sig = new this.RSA.RSAKey()
sig.readPKCS5PrvKeyHex(prvKeyHEX)
signature.init(sig);
signature.updateString(signData);  //signData是待加密数据
let signsig = signature.sign()          //signsig是最后加密完的数据
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值