一、代码

1、php

//解密函数
function myDecode($txt, $key = 'YangYang')
{
    $txt = urldecode($txt);
    $chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-=+";
    $ch = $txt[0];
    $nh = strpos($chars, $ch);
    $mdKey = md5($key . $ch);
    $mdKey = substr($mdKey, $nh % 8, $nh % 8 + 7);
    $txt = substr($txt, 1);
    $tmp = '';
    $j = 0;
    $k = 0;
    for ($i = 0; $i < strlen($txt); $i++) {
        $k = $k == strlen($mdKey) ? 0 : $k;
        $j = strpos($chars, $txt[$i]) - $nh - ord($mdKey[$k++]);
        while ($j < 0) $j += 64;
        $tmp .= $chars[$j];
    }
    return base64_decode($tmp);
}

//加密函数
function myEncrypt($txt, $key = 'YangYang')
{
    $chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-=+";
    $nh = rand(0, 64);
    $ch = $chars[$nh];
    $mdKey = md5($key . $ch);
    $mdKey = substr($mdKey, $nh % 8, $nh % 8 + 7);
    $txt = base64_encode($txt);

    $tmp = '';
    $j = 0;
    $k = 0;
    for ($i = 0; $i < strlen($txt); $i++) {
        $k = $k == strlen($mdKey) ? 0 : $k;
        $j = ($nh + strpos($chars, $txt[$i]) + ord($mdKey[$k++])) % 64;
        $tmp .= $chars[$j];
    }
    return urlencode($ch . $tmp);
}

2、js

let Base64 = require('js-base64').Base64;
import md5 from 'js-md5'
var MyCode = {
    encrypt(txt, key='YangYang') { //加密
        var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-=+";
        var nh = Math.floor(Math.random() * 65);
        var ch = chars[nh];
        var mdKey = md5(key + ch);
        var mdKey = mdKey.substr(nh % 8, nh % 8 + 7);
        txt = Base64.encode(txt);
        var tmp = '',
            j = 0,
            k = 0;
        for (var i = 0; i < txt.length; i++) {
            k = k == mdKey.length ? 0 : k;
            j = (nh + chars.indexOf(txt[i]) + mdKey[k++].charCodeAt(0)) % 64;
            tmp += chars[j];
        }
        return encodeURI(ch + tmp);
    },
    decode(txt, key='YangYang') { //解密
        txt = decodeURI(txt);
        var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-=+";
        var ch = txt[0];
        var nh = chars.indexOf(ch);
        var mdKey = md5(key + ch);
        mdKey = mdKey.substr(nh % 8, nh % 8 + 7);
        txt = txt.substr(1);
        var tmp = '',
            j = 0,
            k = 0;
        for (var i = 0; i < txt.length; i++) {
            k = k == mdKey.length ? 0 : k;
            j = chars.indexOf(txt[i]) - nh - mdKey[k++].charCodeAt(0);
            while (j < 0) {
                j += 64;
            }
            tmp += chars[j];
        }
        return Base64.decode(tmp);
    }
}
export default MyCode

 

版权声明:本文为样子2018原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/yang-2018/p/16110996.html