前端加密算法(前端数据加密的几种方式)
1.base64加密方式
1.1 base64是什么?
Base64 ,顾名思义 ,就是包括小写字母a-z 、大写字母A-Z 、数字0-9、符号"+" 、"/"一共64个字符的字符集 ,(另加一个“= ” ,实际是65个字符 ,至于为什么还会有一个“=" ,这个后面再说) 。任何符号都可以转换成这个字符集中的字符 ,这个转换过程就叫做base64编码 。
1.2 base64转码和解码
<script>
let str = ImGod;
let str64 = window.btoa(str);
console.log(转化后:+str64);
let jm = window.atob(str64);
console.log(解码后:+jm);
</script>
结果:
2.MD5 加密方式(不可逆)
MD5是一种被广泛使用的密码散列函数 ,可以产生出一个128位(16字节)的散列值(hash value) ,用于确保信息传输完整一致。MD5由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,于1992年公开 ,用以取代MD4算法 。
MD5.JS是通过前台js加密的方式对密码等私密信息进行加密的工具 。
2.1使用方法
1.引入
<script src="https://cdn.bootcss.com/blueimp-md5/2.12.0/js/md5.min.js"></script>
2.示例
<script>
// MD5加密方式
// hex_md5(data);//data表示你要加密的数据
let str = abc;
let newStr = md5(str);
console.log(newStr);
</script>
结果:
3.sha1.js (不可逆)
3.1 sha1是什么?
SHA-1是一种数加密算法 ,该算法的思想是接收一段明文,然后以一种不可逆的方式将它转换成一段(通常更小)密文 ,也可以简单的理解为取一串输入码(称为预映射或信息) ,并把它们转化为长度较短 、位数固定的输出序列即散列值(也称为信息摘要或信息认证代码)的过程 。
3.2 引入
<script src="https://cdn.bootcss.com/js-sha1/0.6.0/sha1.js"></script>
目前没有在网上没找到下载地址,只能在线引入 。
3.3 示例
<script>
//sha1加密方式
let str = abcd;
let sha_1 = sha1(str);
console.log(sha_1);
</script>
结果:
4.编码和解码字符串
这个主要是使用JS函数的escape()和unescape() ,分别是编码和解码字符串 。
escape采用ISO Latin字符集对指定的字符串进行编码 。所有的空格符 、标点符号 、特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字)
在很多脚本语言的应用当中,escape函数是一个可转换编码的函数,比如javascript 的 ajax 中,向a.php传递参数?city=北京,可先将"北京"用escape重新编码,再进行传递,在服务器端接收后再解码才不会出现乱码 。escape一般用于传递URL参数和类似urlencode base64_encode函数是类似的 。
4.1 示例
<script>
//编码和解码字符串
let str = 在山的那边;
let str1 = escape(str);
let str2 = unescape(str1)
console.log(编码:+str1);
console.log(解码:+str2);
</script>
结果:
5. AES/DES加解密方式
对称加密算法是应用较早的加密算法 ,技术成熟 。在对称加密算法中 ,数据发信方将明文(原始数据)和加密密钥(mi yue)一起经过特殊加密算法处理后 ,使其变成复杂的加密密文发送出去。收信方收到密文后 ,若想解读原文 ,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密 ,才能使其恢复成可读明文 。在对称加密算法中 ,使用的密钥只有一个 ,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道加密密钥 。
5.1 优缺点
优点:算法公开 、计算量小 、加密速度快 、加密效率高。
缺点:
(1)交易双方都使用同样钥匙 ,安全性得不到保证 。
(2)每对用户每次使用对称加密算法时 ,都需要使用其他人不知道的惟一钥匙,这会使得发收信双方所拥有的钥匙数量呈几何级数增长 ,密钥管理成为用户的负担 。对称加密算法在分布式网络系统上使用较为困难 ,主要是因为密钥管理困难,使用成本较高。
5.2 示例
<script type="text/javascript">
var aseKey = "12345678" //秘钥必须为:8/16/32位
var message = "13785624612";
//加密
var encrypt = CryptoJS.AES.encrypt(message, CryptoJS.enc.Utf8.parse(aseKey), {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
}).toString();
console.log(encrypt);
//解密
var decrypt = CryptoJS.AES.decrypt(encrypt, CryptoJS.enc.Utf8.parse(aseKey), {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
}).toString(CryptoJS.enc.Utf8);
console.log(decrypt); //13785624612
</script>
结果:
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!