• 关于密码的简单加密


    一般用户密码服务器上也是加密的,是不可能明文看得到。如果网页中要记住防止用户再登录该网站免输入账号和密码,可以通过cookie,sessionStorage,localStorage来记录。

    场景:用户成功登录一次后下次再登录免输账号和密码!保存在本地又不想明文显示出来。只能加密保存(一般加密都是不可逆的)

    一、一个简单的加密和解密(如果代码完全暴露没有安全性)

    //加密
    function
    encrypto( str, xor, hex ) { if ( typeof str !== 'string' || typeof xor !== 'number' || typeof hex !== 'number') { return; } let resultList = []; hex = hex <= 25 ? hex : hex % 25; for ( let i=0; i<str.length; i++ ) { // 提取字符串每个字符的ascll码 let charCode = str.charCodeAt(i); // 进行异或加密 charCode = (charCode * 1) ^ xor; // 异或加密后的字符转成 hex 位数的字符串 charCode = charCode.toString(hex); resultList.push(charCode); } let splitStr = String.fromCharCode(hex + 97); let resultStr = resultList.join( splitStr ); return resultStr; }
    //解密
    function decrypto( str, xor, hex ) { 
        if ( typeof str !== 'string' || typeof xor !== 'number' || typeof hex !== 'number') {
          return;
        }
        let strCharList = [];
        let resultList = []; 
        hex = hex <= 25 ? hex : hex % 25;
        // 解析出分割字符
        let splitStr = String.fromCharCode(hex + 97);
        // 分割出加密字符串的加密后的每个字符
        strCharList = str.split(splitStr);
        for ( let i=0; i<strCharList.length; i++ ) {
          // 将加密后的每个字符转成加密后的ascll码
          let charCode = parseInt(strCharList[i], hex);
          // 异或解密出原字符的ascll码
          charCode = (charCode * 1) ^ xor;
          let strChar = String.fromCharCode(charCode);
          resultList.push(strChar);
        }
        let resultStr = resultList.join('');
        return resultStr;
    }

    二、如何使用

  • 相关阅读:
    POJ 1426 Find The Multiple (DFS / BFS)
    C++的class的样例
    HDU 5063 Operation the Sequence(暴力 数学)
    VmWare 与 宿主主机通信 STEP BY STEP (适用于刚開始学习的人)
    Pig源代码分析: 简析运行计划的生成
    Extjs, 使用GridPanel出现 Layout run failed
    Codeforces #258 Div.2 E Devu and Flowers
    pat(A) 2-06. 数列求和(模拟摆竖式相加)
    javaWeb Cache技术――OSCache(转-全)
    108句个性搞笑签名 (转)
  • 原文地址:https://www.cnblogs.com/-walker/p/7693867.html
Copyright © 2020-2023  润新知