• nodeJS rsasha加密


    /**
     * Created by Administrator on 2017/4/19.
     */
    var crypto = require('crypto');
    
    //签名
    function signer(algorithm, key, data) {
        key = get_key(key, 1);
        var sign = crypto.createSign(algorithm);
        sign.update(data);
        sig = sign.sign(key, 'base64');
        return sig;
    }
    
    //验证签名
    function verify(algorithm, pubkey, sig, data) {
        pubkey = get_key(pubkey, 0);
        var verify = crypto.createVerify(algorithm);
        verify.update(new Buffer(data, 'utf-8'));
        return verify.verify(pubkey, sig, 'base64');
    }
    
    /**
    *获取PEM格式的秘钥(公钥,私钥)
    *key:待编码的key
    *keyType: 0 公钥 1 私钥
    */
    function get_key(key,keyType) {
        key = insert_str(key, '
    ', 64);
        switch (keyType) {
            case 0:
                key = '-----BEGIN PUBLIC KEY-----
    ' + key + '-----END PUBLIC KEY-----';
                break;
            case 1:
                key = '-----BEGIN PRIVATE KEY-----
    ' + key + '-----END PRIVATE KEY-----';
                break;
        }
        return key;
    }
    
    /**
     * 在指定位置插入字符串
     * @待插入字符串 str
     * @插入字符串 insert_str
     * @位置 sn
     * @returns {string}
     */
    function insert_str(str, insert_str, sn) {
        var newstr = "";
        for (var i = 0; i < str.length; i += sn) {
            var tmp = str.substring(i, i + sn);
            newstr += tmp + insert_str;
        }
        return newstr;
    }
    
    /**
     * RSA-SHA1验证签名
     * @数据 {string} data
     * @公钥 {string} pubkey
     * @签名 {string} sig
     */
    exports.rsasha1verify = function(data,pubkey,sig){
        var algorithm = 'RSA-SHA1';
        return verify(algorithm,pubkey,sig,data);
    }
    
    /**
     * RSA-SHA1签名
     * @加密私钥 {string} key
     * @数据 {string} data
     */
    exports.rsasha1sign = function (key,data) {
        var algorithm = 'RSA-SHA1';
        return signer(algorithm, key, data);
    }
    
    /**
     * RSA-SHA256签名
     * @加密私钥 {string} key
     * @数据 {string} data
     */
    exports.rsasha256sign = function (key ,data) {
        var algorithm = 'RSA-SHA256';
        return signer(algorithm, key, data);
    }
    
    /**
     * RSA-SHA256验证签名
     * @数据 {string} data
     * @公钥 {string} pubkey
     * @签名 {string} sig
     */
    exports.rsasha256verify = function (data, pubkey, sig) {
        var algorithm = 'RSA-SHA256';
        return verify(algorithm, pubkey, sig, data);
    }
    

      个人用 备份

  • 相关阅读:
    jquery获取当前时间比较日期
    php获取时间计算时间差
    计数查询统计
    jQuery选取所有复选框被选中的值并用Ajax异步提交数据
    在java中实现对access数据库的远程访问
    sublime快捷键
    局部变量和成员变量的区别
    常见的几种数组排序方法
    JVM的内存划分
    Java函数
  • 原文地址:https://www.cnblogs.com/naocanzhishen/p/8778153.html
Copyright © 2020-2023  润新知