1 Star 0 Fork 2

花非花 / postWomen

forked from 中元 / postWomen 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
index.js 5.11 KB
一键复制 编辑 原始数据 按行查看 历史
wangrb 提交于 2019-11-27 19:30 . 代码提交
const crypto1 = require('crypto');
const sm2_1 = require('sm-crypto').sm2;
const NodeRSA = require('node-rsa');
var rsaKey;
init();//调用初始化
/**
* 初始化
*/
function init(){
showLog("请点击生成公私钥按钮生成公私钥对···");
//初始化复制插件
var clipboardPri = new ClipboardJS('#copyPriBtn');
clipboardPri.on('success', function(e) {
layer.msg('复制成功', {
time: 2000, //2s后自动关闭
//btn: ['确定']
});
});
clipboardPri.on('error', function(e) {
layer.msg('复制失败', {
time: 2000, //2s后自动关闭
//btn: ['确定']
});
});
//初始化复制插件
var clipboardPub = new ClipboardJS('#copyPubBtn');
clipboardPub.on('success', function(e) {
layer.msg('复制成功', {
time: 2000, //2s后自动关闭
//btn: ['确定']
});
});
clipboardPub.on('error', function(e) {
layer.msg('复制失败', {
time: 2000, //2s后自动关闭
//btn: ['确定']
});
});
}
/**
* 获取RSA公私钥
*/
function getKeyPairPKCS(){
rsaKey = new NodeRSA({b: 1024}); //生成1024位的密钥
if(veryKeysRSA(rsaKey)){
// layui.jquery("#pkcs").find("option[value=0]").prop("selected",true);
layui.jquery("#pkcs").val(0);
layui.form.render('select');
showPairPKCS(rsaKey, 0);
lay('#pkcsOpts').removeClass('layui-hide');//显示按钮
}else{
getKeyPairPKCS();
}
}
/**
*显示RSA-PKCS公私钥
*/
function showPairPKCS(key, pkcsVal){
switch(pkcsVal){
case 0:
layui.jquery("#pubText").text(key.exportKey("pkcs8-public-pem"));
layui.jquery("#priText").text(key.exportKey("pkcs8-private-pem"));
lay('#btnGroups').removeClass('layui-hide');//显示按钮
showLog("RSA-PKCS8公私钥对已生成,请复制···");
break;
case 1:
layui.jquery("#pubText").text(key.exportKey("pkcs1-public-pem"));
layui.jquery("#priText").text(key.exportKey("pkcs1-private-pem"));
lay('#btnGroups').removeClass('layui-hide');//显示按钮
showLog("RSA-PKCS1公私钥对已生成,请复制···");
break;
default:
break;
}
}
/**
* 切换RSA-PKCS公私钥
*/
layui.use(['form', 'layer'],function(){
var form = layui.form;
var layer = layui.layer;
form.on('select(pkcs)',function(data){
// var pkc = layui.jquery("#pkcs option:selected").val();
var pkc = data.value;
switch(pkc){
case '0':
showPairPKCS(rsaKey, 0);
break;
case '1':
showPairPKCS(rsaKey, 1);
break;
default:
break;
}
})
})
/**
* 获取SM2可用公私钥
*/
function getKeyPairHexSM2(){
var keyPairHex = sm2_1.getKeyPairHex();
if(veryKeysSM2(keyPairHex)){
layui.jquery("#pubText").text(keyPairHex.publicKey);
layui.jquery("#priText").text(keyPairHex.privateKey);
lay('#pkcsOpts').addClass('layui-hide');//隐藏pkcs选择框
lay('#btnGroups').removeClass('layui-hide');//显示按钮
showLog("SM2公私钥对已生成,请复制···");
}else{
getKeyPairHexSM2();
}
}
/**
* 校验RSA公私钥可用
*/
function veryKeysRSA(keys){
var public_key = keys.exportKey("pkcs1-public-pem"); //公钥
var private_key = keys.exportKey("pkcs1-private-pem");//私钥
var data = "{\"name\":\"zhangshan\"}";
var signed = signRSA(private_key, data);
return verifyRSA(public_key, signed, data);
}
/**
* 校验SM2公私钥可用
*/
function veryKeysSM2(keys){
var public_key = keys.publicKey;
var private_key = keys.privateKey;
var data = "{\"name\":\"zhangshan\"}";
var signed = signSM2(private_key, data);
return verifySM2(public_key, signed, data);
}
/**
* RSA签名
*/
function signRSA(private_key, data){
var sign = crypto1.createSign('RSA-SHA1');
sign.update(data);
var sig = sign.sign(private_key, 'base64');
return sig;
}
/**
* RSA验签
*/
function verifyRSA(public_key, sig, data){
var verify = crypto1.createVerify('RSA-SHA1');
verify.update(data);
var res = verify.verify(public_key, sig, 'base64');
return res;
}
/**
* SM2签名
*/
function signSM2(private_key, data){
var sig = sm2_1.signature(data,private_key);
return Buffer.from(sig, 'utf8').toString('base64');
}
/**
* SM2验签
*/
function verifySM2(public_key, sig, data){
sig = Buffer.from(sig,'base64').toString();
return sm2_1.verifySignature(data,public_key,sig);
}
/**
* 打印日志
*/
function showLog(text){
lay('#info').removeClass('layui-hide');
lay("#info").html(text);
}
/**
* 清空数据
*/
function empty(){
lay(".keyPair").html("");//清除数据
lay('#btnGroups').addClass('layui-hide');//隐藏按钮
lay('#pkcsOpts').addClass('layui-hide');//隐藏pkcs选项框
showLog("请点击生成公私钥按钮生成公私钥对···");
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
NodeJS
1
https://gitee.com/flowers_not_flower/postWomen.git
git@gitee.com:flowers_not_flower/postWomen.git
flowers_not_flower
postWomen
postWomen
master

搜索帮助

344bd9b3 5694891 D2dac590 5694891