单向加密:
单向加密也称为哈希加密,指的是一种不可逆的加密方式。对于一个给定的明文,通过哈希算法可以生成一个固定长度的密文(哈希值),但无法通过这个密文来推算出原始明文。常见的哈希算法有 MD5、SHA-1、SHA-256 等。单向加密通常用于验证数据的完整性和真实性,例如,在用户注册和登录时,将用户密码进行哈希加密后保存到数据库中,这样即使数据库泄漏,黑客也无法直接获取用户密码。当用户登录时,将输入的密码再次进行哈希加密并与数据库中保存的密码进行比较,如果一致则认证通过。
双向加密:
双向加密也称为对称加密,指的是一种可逆的加密方式。在双向加密中,使用同一个密钥(称为对称密钥)进行加密和解密。对于一个给定的明文,通过双向加密算法可以使用密钥生成一个密文,同时也可以使用相同的密钥将密文还原成明文。常见的双向加密算法有 DES、AES、RC4 等。双向加密通常用于对数据进行保密和传输,例如,通过 HTTPS 协议对网站的敏感数据进行传输时,使用了对称密钥对数据进行加密和解密。
单向加密和双向加密都属于对称加密算法。单向加密也被称为哈希算法,常用于验证数据的完整性和真实性。在单向加密中,同一个输入数据会得到同一个输出结果,但无法根据输出结果推出输入数据。常用的单向加密算法有 MD5、SHA-1、SHA-256 等。
双向加密则是指加密和解密使用同一个密钥的算法,即对称加密算法。在双向加密中,同一个密钥既可以用于加密数据,又可以用于解密数据。常见的对称加密算法有 DES、3DES、AES 等。
非对称加密是指加密和解密使用不同密钥的算法。在非对称加密中,每个用户拥有一对公私钥,其中公钥用于加密数据,私钥用于解密数据。受保护的数据发送方在使用收件人的公钥加密数据后发送给收件人,收件人获取数据后使用自己的私钥进行解密。常见的非对称加密算法有 RSA、DSA 等。
总的来说,单向加密和双向加密属于对称加密算法,适用于验证数据的完整性和保密性;而非对称加密则是一种非常安全的加密方式,适用于数据传输中的身份验证、密钥交换等场景
-
单向加密
import { MD5 } from 'crypto-js'; MD5('hello world').toString()
-
非对称加密
import JSEncrypt from "jsencrypt"; const rsa = new JSEncrypt(); // 生成密钥对,指定 keysize rsa.getKey(10); // 获取公钥和私钥 const publicKey = rsa.getPublicKey(); const privateKey = rsa.getPrivateKey(); console.log(publicKey, privateKey); const change = (e) => { // 公钥进行加密 const encryptData = encodeURIComponent(rsa.encrypt(e.target.value)); console.log(encryptData); // 私钥进行解密 const decryptData = rsa.decrypt(decodeURIComponent(encryptData)); console.log(decryptData); // 输出 "Hello, world" };