• vue axios请求加RSA 公钥加密 私钥解密


    项目上线后,为了安全,会对请求加密,防止看到请求参数。现在直接看代码吧。这里以vue为例。

    在main.js中的请求拦截器中

    然后主要看加密算法

    var b64map = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
    var b64pad = "=";
    var BI_RM = "0123456789abcdefghijklmnopqrstuvwxyz";

    function hex2b64(h) {
    var i;
    var c;
    var ret = "";
    for (i = 0; i + 3 <= h.length; i += 3) {
    c = parseInt(h.substring(i, i + 3), 16);
    ret += b64map.charAt(c >> 6) + b64map.charAt(c & 63);
    }
    if (i + 1 == h.length) {
    c = parseInt(h.substring(i, i + 1), 16);
    ret += b64map.charAt(c << 2);
    }
    else if (i + 2 == h.length) {
    c = parseInt(h.substring(i, i + 2), 16);
    ret += b64map.charAt(c >> 2) + b64map.charAt((c & 3) << 4);
    }
    while ((ret.length & 3) > 0) {
    ret += b64pad;
    }
    return ret;
    }

    //长字符串加密
    JSEncrypt.prototype.encryptLong = function (string) {
    var k = this.getKey();
    //var MAX_ENCRYPT_BLOCK = (((k.n.bitLength() + 7) >> 3) - 11);
    var MAX_ENCRYPT_BLOCK = 117;
    try {
    var lt = "";
    var ct = "";
    //RSA每次加密117bytes,需要辅助方法判断字符串截取位置
    //1.获取字符串截取点
    var bytes = new Array();
    bytes.push(0);
    var byteNo = 0;
    var len, c;
    len = string.length;
    var temp = 0;
    for (var i = 0; i < len; i++) {
    c = string.charCodeAt(i);
    if (c >= 0x010000 && c <= 0x10FFFF) {
    byteNo += 4;
    } else if (c >= 0x000800 && c <= 0x00FFFF) {
    byteNo += 3;
    } else if (c >= 0x000080 && c <= 0x0007FF) {
    byteNo += 2;
    } else {
    byteNo += 1;
    }
    if ((byteNo % MAX_ENCRYPT_BLOCK) >= 114 || (byteNo % MAX_ENCRYPT_BLOCK) == 0) {
    if (byteNo - temp >= 114) {
    bytes.push(i);
    temp = byteNo;
    }
    }
    }
    //2.截取字符串并分段加密
    if (bytes.length > 1) {
    for (var i = 0; i < bytes.length - 1; i++) {
    var str;
    if (i == 0) {
    str = string.substring(0, bytes[i + 1] + 1);
    } else {
    str = string.substring(bytes[i] + 1, bytes[i + 1] + 1);
    }
    var t1 = k.encrypt(str);
    ct += t1;
    }
    ;
    if (bytes[bytes.length - 1] != string.length - 1) {
    var lastStr = string.substring(bytes[bytes.length - 1] + 1);
    ct += k.encrypt(lastStr);
    }
    return hex2b64(ct);
    }
    var t = k.encrypt(string);
    var y = hex2b64(t);
    return y;
    } catch (ex) {
    return false;
    }
    };

    下面请看network 加密后的参数

     因为私钥解密是java 获取到加密的数据后去解密的,这里就暂时先不写了!!!

  • 相关阅读:
    关于 Bellman-Ford 与 Floyd 算法的一点感想
    中途相遇法 解决 超大背包问题 pack
    具体一些的博弈论 sqrstone
    SG函数学习总结
    mc
    string
    积木大赛
    pta l3-20(至多删三个字符)
    pta l3-7(天梯地图)
    ucore-lab1-练习2report
  • 原文地址:https://www.cnblogs.com/Gherardo/p/12169765.html
Copyright © 2020-2023  润新知