`
1197757723
  • 浏览: 125813 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

node.js crypto RSA

阅读更多
const crypto = require('crypto');
const fs = require('fs');
// const privatePem = fs.readFileSync('../cert/LHpem/private_key_pkcs8.pem');
// const publicPem = fs.readFileSync('../cert/LHpem/public_key.pem');

let privatePem = '-----BEGIN PRIVATE KEY-----\n' + 'MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAKExgWbsuBiDmAq0zATd/B1zEDyfJPSeIt4qwM/HIt028ArYxNfZJeeP/+CSbR8UQ3t00aMfR8u2mTQ/vxlONLE9nhwAi+Ql8u8EL5W4DIj7E6REtx5QFec6CG1BGDOx7DwqgFpQoB/3t8QSq1fl/Vb1HFwtIWkNg51PAQTwmqa1AgMBAAECgYASB/qkq8gwHdBNKkpEJRzFopBnZ5n3rxTRa1DkLS9uNW4GmJb0WjsOOyJxWY/RUS/3SGsG50HdvNBIcvUKfKASIYRuyWb/jlgWF3zF6g8y20oHVJ6+yIs1aBy9tmRRW1iBPRm613Dn0Fsiz4tbEDkCO6yxjAtuLziP/jnAZcpRZQJBAO2ENdLMibwxVzrvnw1ev9jzKp53idhP5ATK+IEawKGeDuf6YAICcZ6McCNqh+T5KQlygDyUk1TZubJNrG9JlEcCQQCtvMqQBTreQzOUfXqZ4NeJzxboR6Hm7L2ivqHK2WK7mAM6zp0iT6AgbPjWxK9VWJm688/4nhPSVryUJ28CfxcjAkA3t8Igl1bgTPrXmorHSijbLgAbeJNfqS4maa7uKmZyA3Afvz5yejxJI0zTIhSLBGA6FSA8FeaSCxli2JHQ8YPVAkBjKaR8O1/0SGsCT/RQK/MZ5yduAKS6B1ndr+zsuNMPu53sTM2HLed5WnlVLAHfNqjX+h00DBXIMlWEQlWsGRn9AkBe7I+TPIAgTVyZ6n+SHidD2QB0tZTpW8DuSgg8JXV8XV8T01wtRe92vbtIflrS2V1LwlucYSLe1w+5cldHHs34' + '\n-----END PRIVATE KEY-----';
let publicPem = '-----BEGIN PUBLIC KEY-----\n' + 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQChMYFm7LgYg5gKtMwE3fwdcxA8nyT0niLeKsDPxyLdNvAK2MTX2SXnj//gkm0fFEN7dNGjH0fLtpk0P78ZTjSxPZ4cAIvkJfLvBC+VuAyI+xOkRLceUBXnOghtQRgzsew8KoBaUKAf97fEEqtX5f1W9RxcLSFpDYOdTwEE8JqmtQIDAQAB' + '\n-----END PUBLIC KEY-----';

//私钥签名
function getSign(params) {
    try {
        // 读取秘钥
        // var privatePem = fs.readFileSync('../cert/LHpem/private_key_pkcs8.pem');
        // var key = privatePem.toString();
        // console.log('key: ' + key);
var sign = crypto.createSign('RSA-SHA1');
sign.update(params);
sign = sign.sign(privatePem, 'base64');
// return encodeURIComponent(sign)
return sign;
} catch(err) {
        console.log('err', err)
    }
}

//公钥验签
function verifySign(params, sign) {
    try {
        // var publicPem = fs.readFileSync('../cert/LHpem/public_key.pem');
        // var publicKey = publicPem.toString();
var verify = crypto.createVerify('RSA-SHA1');
verify.update(params);
return verify.verify(publicPem.toString(), sign, 'base64')

    } catch(err) {
        console.log('veriSign err', err)
    }
}

//公钥加密
function publicEncrypt(data) {
    let encodeData = crypto.publicEncrypt(publicPem, Buffer.from(data)).toString('base64');
return encodeData;
}

//私钥解密
function privateDecrypt(encodeData) {
    let decodeData = crypto.privateDecrypt(privatePem, Buffer.from(encodeData.toString('base64'), 'base64'));
return decodeData;
}

//私钥加密
function privateEncrypt(data) {
    let encodeData = crypto.privateEncrypt(privatePem, Buffer.from(data)).toString('base64');
return encodeData;
}

//公钥解密
function publicDecrypt(encodeData) {
    let decodeData = crypto.publicDecrypt(publicPem, Buffer.from(encodeData.toString('base64'), 'base64'));
return decodeData;
}

let sign = getSign('123456');
console.log('sign: ' + sign);
let verify = verifySign('123456',sign);
console.log('verify: ' + verify);

let a = publicEncrypt('aaa');
console.log('公钥加密: ' + a);

let b = privateDecrypt(a);
console.log('私钥解密: ' + b);

let c = privateEncrypt(b);
console.log('私钥加密: ' + c);

let d = publicDecrypt(c);
console.log('公钥解密: ' + d);
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics