JS常见加解密算法小结
消息摘要算法
消息摘要算法
消息摘要算法是一种单向散列函数,常用于加密和数据完整性验证。常见的消息摘要算法包括MD5、SHA-1、SHA-256和SHA-512等。它的特点是对不同的明文生成唯一且定长的密文,是不可逆的,即无法通过“密文”还原出明文。
md5
const CryptoJs = require('crypto-js'); let password = "123456"; let encPwd = CryptoJs.MD5(password).toString(); console.log(encPwd); // e10adc3949ba59abbe56e057f20f883e
sha1
const CryptoJs = require('crypto-js'); let password = "123456"; let encPwd = CryptoJs.SHA1(password).toString(); console.log(encPwd); // 7c4a8d09ca3762af61e59520943dc26494f8941b
对称加密算法
对称加密算法
对称加密算法是一种加密技术,它使用相同的密钥(称为对称密钥)同时用于加密和解密数据。常见的加密算法有DES
、AES
、3DES
等。AES是一种广泛使用的对称加密算法,被认为是目前最安全的对称加密算法之一。
AES-ECB
let password = "123456"; let key = "1234567890abcdef" cfg = { mode: CryptoJs.mode.ECB, padding: CryptoJs.pad.Pkcs7 } let encPwd = CryptoJs.AES.encrypt(password, key, cfg).toString() console.log(encPwd) // U2FsdGVkX1+meKI+IXd44qgc50bKb2rDbN91OutwBWs=
根据密钥长度的不同, 可以把AES加密算法分为AES-128/AES-192/AES-256。也就是说密钥的长度必须是16/24/32个字节 。常见mode模式有CBC
、ECB
两种,这两种模式的区别在于是否需要配置iv
向量
AES-CBC
const CryptoJs = require('crypto-js'); let password = CryptoJs.enc.Utf8.parse("123456") // 指定以什么编码方式解析明文 let key = CryptoJs.enc.Utf8.parse("1234567890abcdef") let iv = CryptoJs.enc.Utf8.parse("123456") // 需指定初始向量 cfg = { mode: CryptoJs.mode.CBC, padding: CryptoJs.pad.Pkcs7, iv: iv } let encPwd = CryptoJs.AES.encrypt(password, key, cfg).toString()
非对称加密算法
非对称加密算法
非对称加密算法是一种密码学中的加密方式,也被称为公钥加密算法。与对称加密算法不同,非对称加密算法使用一对密钥,分别是公钥和私钥。非对称加密算法的一个关键特性是,使用公钥加密的数据只能由相应的私钥解密,而使用私钥加密的数据只能由相应的公钥解密。常见的非对称加密算法包括RSA和ECC等
公钥可以公开分享的密钥,用于加密数据。任何人都可以获得公钥,但不能由公钥推导出私钥。
私钥是保密的密钥,用于解密由公钥加密的数据。只有私钥的持有者能够解密使用公钥加密的信息。
RSA
window = global const JSEncrypt = require('jsencrypt') publickey = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCnX3j/luQG7JnPFIFJKEvPC/tFtv14XIzT7FQXYpKsOt2t4uLh6hZa5H5WcEinF46nc91UbrS5UA9Fnnm+Ev20pwUEPVu4On47am6vJOsq8oqQoZDsMu6VGZIzKIm8vDylO6I2xrTaXY2G3hdiRKF7988tA4oYsFOTZ/yG/BOlNwIDAQAB' // 加密 let jse = new JSEncrypt() jse.setPublicKey(publickey) var encStr = jse.encrypt('123456') console.log("加密数据: " + encStr) // 解密 privatekey = 'MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAKdfeP+W5Absmc8UgUkoS88L+0W2/XhcjNPsVBdikqw63a3i4uHqFlrkflZwSKcXjqdz3VRutLlQD0Weeb4S/bSnBQQ9W7g6fjtqbq8k6yryipChkOwy7pUZkjMoiby8PKU7ojbGtNpdjYbeF2JEoXv3zy0DihiwU5Nn/Ib8E6U3AgMBAAECgYA6KW0stEytM08HrQJ4X65oVquMwFg4mUC+7CMUtUZu303lfTCGfQgjsb9NXluA5SjHe/Xvv0DCHNYRxU5dBNBwhIXaRLy6zLKKKp/0gOn1C3dFY/MQOVoEpJ8uxUQh9Kf37F5J9gT64JNooKTTNydqTcmfIhG/u3WFiTVjfW5sEQJBANmvAgUneA6eEC6LwhX9gxdp0T2S+hop19zAm4ErHQld47TlSAxVgwArQG4oJ5J2OWlIT4vzuO1OJOaCj4wZYXMCQQDE1W0uZA1YtjVK7OUuD3f/rgNzolpc0XEEZDPxKsoirEFgW/cFNCTJKIdGK2RgnthLWiN01a9bL6+sF2vLO2wtAkAd0h3Cuv91cS3iUn8KKCqXQIXLm6DriKPrt+8VqORXbidNlsNh/SzvDv3KmXGiXNPMmn1bPM4upC/l7CjiFnAFAkBnmu+dO4zK5R2oEomPdRT0v+OROiPWN2gFp7iveJZtKb4/uiiL1KaIO4z4ol5zfSjcgNWo6dEjbjZJnwpeLykBAkAY/tYLGyrHe0isoZL2xXPlrvde2tbKcbzMrheH1wuqEMX0o0+uHCyFgn2rAzMcfUlntb9iZLLJDkJ+bFET1j3l' jse.setPrivateKey(privatekey) var Str = jse.decrypt(encStr) console.log("解密数据: " + Str)
本文介绍了Web开发中常见的加解密算法,包括消息摘要、对称加密和非对称加密。这些算法在保障用户数据安全、通信加密方面发挥着关键作用。深入理解它们有助于开发者选择合适的安全策略,确保系统的完整性和用户隐私的最大保护。在数字化时代,掌握这些加密技术是构建可信赖Web应用系统的重要一环。
以上就是JS常见加解密算法小结的详细内容,更多关于JS加解密算法的资料请关注脚本之家其它相关文章!
相关文章
JavaScript数组方法之findIndex()的用法详解
findIndex()方法是一个非常实用的数组方法,可以帮助我们快速查找符合某个条件的元素,本文给大家介绍JavaScript数组方法之findIndex()的用法,感谢的朋友跟随小编一起看看吧2023-10-10
最新评论