赞
踩
为了保证数据的安全性和防篡改,很多数据在传输中都进行了加密。例如,很多网站升级到 https 协议, https 协议就是使用了非对称加密和hash签名,还有 github 使用的 ssh ,也是非对称加密。还有大部分登录时密码采用的 MD5 加密等等。
加密算法可分为三大类:对称加密、非对称加密、摘要算法
对称加密采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。
对称加密目前主流的有 AES 和 DES , AES 是新一代的标准,速度快,安全级别更高。
1、AES:
AES的加密模式有五种:CBC、ECB、CTR、OCF、CFB
AES 有三种长度 128位、192位、256位,这三种的区别,主要来自于密钥的长度,16字节密钥=128位,24字节密钥=192位,32字节密钥=256位。如下表格:
长度 | 密钥长度 | 向量长度 |
---|---|---|
128位 | 16 | 16 |
192位 | 24 | 16 |
256位 | 32 | 16 |
2、DES
加密默认与 AES 相同,也有五种模式,除了 ECB 只需要密钥,其他模式需要密钥和向量。与 AES 不同的是, DES 的密钥长度只有8字节,向量也是8字节。
3、代码实现
(1)安装crypto-js模块
npm install crypto-js
(2)在js文件中引入crypto-js模块
const CryptoJS = require("crypto-js"); // 加密 // key:密钥,text:明文 function encrypt(key, text) { return CryptoJS.AES.encrypt(text, key).toString(); } // 解密 // key:密钥,cipherText密文 function decrypt(key, cipherText) { let bytes = CryptoJS.AES.decrypt(cipherText, key); return bytes.toString(CryptoJS.enc.Utf8) } let key = "abc" let text = "猪二哥" let ciphertext = encrypt(key, text) console.log("密文:" + ciphertext) let originalText = decrypt(key, ciphertext) console.log("明文:" + originalText)
非对称加密有两把钥匙:公钥和私钥
公钥是可以公开对外,私钥就是自个的,不可泄露。因为有两个密钥,非对称加密这个名字就是这么由来的。
发送方用接收方公开对外的公钥进行加密,接收方收到数据后,用私钥进行解密,业务处理完后,用私钥给需要回传的数据加密,收到数据的一方在用公钥解密。这个过程就是非对称加解密,简单理解就是公钥加密的数据,用私钥解密;私钥加密的数据,用公钥解密。
非对称加密与对称加密相比,安全性要高很多。对于对称加密,密钥钥匙被某一方不小心泄露了,那秘文就有可能被破解和篡改。而非对称加密,公钥随意流通,只要颁发密钥的一方好好把私钥保管好,安全性是妥妥的。
密钥生成方式:网上有很多工具可以一键生成配对的公钥和私钥,淘宝、微信都有提供相关工具,或者使用 OpenSSL 生成也可以。
1、把任意长度的输入,根据算法生成一串固定长度的伪随机数,这一算法就是摘要算法,它有这么几个特点:
根据这些特点,摘要算法通常用于生成签名,用来验证数据的完整性。还有用户密码的存储,如今密码的存储主流的方式,就是使用摘要算法生成唯一的标识,为了保证安全性,通常在生成摘要后再加上一串随机数(加盐salt),再来hash一次。
目前主流的实现有 MD5 和 SHA-2 , MD5 生成的摘要是 32 字节, sha256 生成的摘要是 64 字节。
2、编码实现
(1)安装crypto模块
npm install crypto
(2)代码实现:
const crypto = require('crypto'); // md5加密 function md5(text) { const hash = crypto.createHash('md5') return hash.update(text).digest('hex') } // 加密 function sha256(data) { const hash = crypto.createHash('sha256'); return hash.update(data).digest('hex'); } console.log(md5('abc')) console.log(sha256('abc'))
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。