js AES 加密解密
时间: 2023-10-05 22:05:45 浏览: 50
以下是使用 CryptoJS 库进行 AES 加密解密的示例代码:
```javascript
// 加密
function encryptAES(text, key) {
const encrypted = CryptoJS.AES.encrypt(text, key);
return encrypted.toString();
}
// 解密
function decryptAES(ciphertext, key) {
const decrypted = CryptoJS.AES.decrypt(ciphertext, key);
return decrypted.toString(CryptoJS.enc.Utf8);
}
```
其中 `text` 表示要加密的明文,`key` 表示 AES 加密算法的密钥。`ciphertext` 表示要解密的密文。
示例代码中使用了 CryptoJS 库,可以通过以下方式引入:
```html
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/crypto-js.min.js"></script>
```
需要注意的是,在使用 AES 加密时,密钥的长度必须是 16、24 或 32 字节。如果密钥长度不足,可以在密钥后面补 0,如果密钥长度过长,可以截取前面的部分作为密钥。
相关问题
js aes加密 java解密
好的,这是一个常见的加密解密场景。你可以使用以下步骤进行加密和解密:
1. 在 JavaScript 中使用 AES 加密文本,例如使用 CryptoJS 库。
```javascript
var key = CryptoJS.enc.Utf8.parse("Secret Passphrase"); // 使用加密密钥
var iv = CryptoJS.enc.Utf8.parse("Initialization Vector"); // 使用初始化向量
var encrypted = CryptoJS.AES.encrypt("Hello World!", key, { iv: iv }); // 加密数据
var encryptedText = encrypted.toString();
```
2. 将加密后的文本发送到后端,使用 Java 进行解密,例如使用 Bouncy Castle 库。
```java
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.security.Security;
public class AesUtil {
public static String decrypt(String encryptedText, String key, String iv) {
Security.addProvider(new BouncyCastleProvider());
try {
byte[] keyBytes = key.getBytes("UTF-8");
byte[] ivBytes = iv.getBytes("UTF-8");
byte[] encryptedBytes = Base64.getDecoder().decode(encryptedText);
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding", "BC");
SecretKeySpec secretKeySpec = new SecretKeySpec(keyBytes, "AES");
IvParameterSpec ivParameterSpec = new IvParameterSpec(ivBytes);
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec, ivParameterSpec);
byte[] decryptedBytes = cipher.doFinal(encryptedBytes);
return new String(decryptedBytes, "UTF-8");
} catch (Exception ex) {
ex.printStackTrace();
return null;
}
}
}
```
3. 在 Java 中调用 `AesUtil.decrypt()` 方法进行解密。
```java
String encryptedText = "U2FsdGVkX1+4kg4xJ0TZx8M1m3B0i3WrJHv5QSwz5vU=";
String key = "Secret Passphrase";
String iv = "Initialization Vector";
String decryptedText = AesUtil.decrypt(encryptedText, key, iv);
System.out.println(decryptedText); // 输出 "Hello World!"
```
请注意,这只是一个基本的示例,你需要根据你的具体情况进行调整。此外,确保保护好你的加密密钥和初始化向量,以确保安全性。
前端怎么实现aes加密解密
前端可以使用 CryptoJS 库来实现 AES 加密和解密。首先,需要引入 CryptoJS 库:
```html
<script src="https://cdn.bootcdn.net/ajax/libs/crypto-js/4.0.0/crypto-js.min.js"></script>
```
然后,可以使用以下代码来进行 AES 加密和解密:
```javascript
// AES 加密
function encryptAES(text, key) {
var encrypted = CryptoJS.AES.encrypt(text, key);
return encrypted.toString();
}
// AES 解密
function decryptAES(ciphertext, key) {
var decrypted = CryptoJS.AES.decrypt(ciphertext, key);
return decrypted.toString(CryptoJS.enc.Utf8);
}
// 示例
var plaintext = "Hello, World!";
var key = "mySecretKey";
var ciphertext = encryptAES(plaintext, key);
console.log("Ciphertext:", ciphertext);
var decryptedText = decryptAES(ciphertext, key);
console.log("Decrypted Text:", decryptedText);
```
在上面的示例中,`plaintext` 是待加密的明文,`key` 是用于加密和解密的密钥。`encryptAES` 函数使用提供的密钥对明文进行加密,并返回加密后的密文。`decryptAES` 函数使用提供的密钥对密文进行解密,并返回解密后的明文。
请注意,为了安全起见,密钥应该通过安全的方式传递给前端,例如使用 HTTPS。此外,加密和解密操作通常是在服务器端完成,前端仅负责传递数据和显示结果。