良许Linux教程网 干货合集 详解js常用的加密/解密

详解js常用的加密/解密

本篇文章重点为大家讲解一下js常用的加密/解密方法,有需要的小伙伴可以参考一下。

image-20220908215750808

1.前言(老司机直接跳过) 为什么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)1.2.3.4.

用escape函数加密后,字符变成了%开头形式的特殊编码。

我们也可以用unescape把加密后的js解密回来

md5

https://github.com/blueimp/JavaScript-MD5

var hash = md5('value') // "2063c1608d6e0baf80249c42e2be5804"1.

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:加密key1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.

rsa

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);1.2.3.4.5.6.7.8.

base64

Base64是网络上最常见的用于传输8Bit 字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示 二进制数据的方法

浏览器的window对象默认就有base64的加解密函数

const code = '(function(){ alert(\'hello\') }())'
const en = window.btoa(code); // 加密
const de = window.atob(en); // 解密1.2.3.

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();1.2.3.4.

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();1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.

如果觉得上边这些加密方式还不够安全,无法达到你的预期,可以使用 sojson.v6加密,加密强度在国内排名第一,作者每年都会更新加密算法,不停增加加密强度,既保证了js的运行速度又保证了js的安全性。

js常用的加密/解密方法_js解密
js常用的加密/解密方法_js加密_02

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

137e00002230ad9f26e78-265x300
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部