• 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);
    }
    

      个人用 备份

  • 相关阅读:
    Linux 搭建svn环境
    Echarts 获取后台数据 使用后台数据展示 饼装图
    js 实现存储Map 结构的数据
    SVN使用方法
    SVN版本回退
    adf 日志输出
    Oracle ADF VO排序及VO的查询模式
    weblogic 初始化
    jdeveloper 恢复默认配置
    jdeveloper12.1.3的安装与卸载
  • 原文地址:https://www.cnblogs.com/naocanzhishen/p/8778153.html
Copyright © 2020-2023  润新知