js代码加密原理有哪些(js常用的加密/解密方法)
谈到加密 ,大多数人应用场景都在于后端接口的加密签名校验 。这种一般都用于服务端与服务端之间的相互调用 ,避免第三方使用你的接口做违法违规的事情 ,这种加密校验比较安全 ,因为没有暴露在外的代码 。
但是前端运行的JavaScript代码不一样 ,它是运行在浏览器的一种轻量级即时编译型的脚本语言 。它是直接运行在用户电脑上的代码 ,除了在sojson.v6加密过的js代码 ,普通的js代码对于使用者来说是公开透明的 ,对于想要非法获取你的数据的人也是公开透明的 ,那么对于那些想要通过分析你的js代码来盗取你服务器数据的人来说 ,就是一件十分简单没难度的事情 。
2.常用的js加密有哪些JavaScript的原生函数escape()和unescape()
var code = console.log("hello"); var en = escape(code); // console.log%28%22hello%22%29 var de = unescape(en); // console.log("hello") document.write(en, , de)用escape函数加密后 ,字符变成了%开头形式的特殊编码 。
我们也可以用unescape把加密后的js解密回来
md5
https://github.com/blueimp/JavaScript-MD5
var hash = md5(value) // "2063c1608d6e0baf80249c42e2be5804"MD5算法的原理可简要的叙述为:MD5码以512位分组来处理输入的信息 ,且每一分组又被划分为16个32位子分组,经过了一系列的处理后 ,算法的输出由四个32位分组组成 ,将这四个32位分组级联后将生成一个128位散列值 。
md5加密一般用于确保文件和代码的唯一性,可以根据计算代码的md5值来判断代码是否被改变 。
des/aes
https://github.com/brix/crypto-js
DES是一种使用密钥加密的块算法 ,1977年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS) ,并授权在非密级政府通信中使用
1. 在utils/common.js中 写入公用的方法 eg: // 公用方法 import CryptoJS from "../common/crypto-js/crypto-js.js" // 加密 // 在main.js中引入 export default { // 加密 encryptByDES(message, key) { const keyHex = CryptoJS.enc.Utf8.parse(key); const encrypted = CryptoJS.DES.encrypt(message, keyHex, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7, }); return encrypted.toString(); } } 2. 在main.js中引入 import commonFun from ./utils/common.js //在 vue 的原型链 (prototype) 中注册 Vue.prototype.$commonFun = commonFun 3. 页面中使用 this.$commonFun.encryptByDES(参数1, 参数2); //参数1:需要加密的数据 //参数2:加密keyrsa
https://github.com/rzcoder/node-rsa
RSA是被研究得最广泛的公钥算法 ,从提出到现在已近三十年 ,经历了各种攻击的考验 ,逐渐为人们接受 ,普遍认为是目前最优秀的公钥方案之一 。
const NodeRSA = require(node-rsa); const key = new NodeRSA({b: 512}); const text = Hello RSA!; const encrypted = key.encrypt(text, base64); console.log(encrypted: , encrypted); const decrypted = key.decrypt(encrypted, utf8); console.log(decrypted: , decrypted);base64
Base64是网络上最常见的用于传输8Bit字节码的编码方式之一 ,Base64就是一种基于64个可打印字符来表示二进制数据的方法
浏览器的window对象默认就有base64的加解密函数
const code = (function(){ alert(\hello\) }()) const en = window.btoa(code); // 加密 const de = window.atob(en); // 解密sha1
https://github.com/emn178/js-sha1
SHA1是一种密码散列函数 ,美国国家安全局设计 ,并由美国国家标准技术研究所(NIST)发布为联邦数据处理标准(FIPS) 。SHA-1可以生成一个被称为消息摘要的160位(20字节)散列值 ,散列值通常的呈现形式为40个十六进制数 。
sha1(Message to hash); var hash = sha1.create(); hash.update(Message to hash); hash.hex();sha256
https://github.com/emn178/js-sha256
SHA256是一种散列函数算法标准 ,由美国国家安全局研发 ,由美国国家标准与技术研究院(NIST)在2001年发布,属于SHA算法之一 。和SHA1属于不同算法标准
sha256(Message to hash); sha224(Message to hash); var hash = sha256.create(); hash.update(Message to hash); hash.hex(); var hash2 = sha256.update(Message to hash); hash2.update(Message2 to hash); hash2.array(); // HMAC sha256.hmac(key, Message to hash); sha224.hmac(key, Message to hash); var hash = sha256.hmac.create(key); hash.update(Message to hash); hash.hex(); var hash2 = sha256.hmac.update(key, Message to hash); hash2.update(Message2 to hash); hash2.array();如果觉得上边这些加密方式还不够安全 ,无法达到你的预期 ,可以使用sojson.v6加密,加密强度在国内排名第一 ,作者每年都会更新加密算法 ,不停增加加密强度 ,既保证了js的运行速度又保证了js的安全性 。
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!