AES加解密
AES对称加密算法,支持多种模式和填充方式,提供加密和解密功能
AES简介
AES(Advanced Encryption Standard,高级加密标准)是一种广泛应用的对称加密算法,支持128、192、256位密钥长度,常用于数据加密传输和存储。常见模式有ECB、CBC等。
算法特点
- 对称加密:加密和解密使用相同的密钥
- 支持多种分组模式(如ECB、CBC)
- 支持多种填充方式
- 高安全性和高性能
常见用途
- 数据加密传输
- 文件加密存储
- 密码保护
- 金融交易安全
代码示例
Python:
from Crypto.Cipher import AES from Crypto.Util.Padding import pad, unpad def aes_encrypt(key, data): cipher = AES.new(key.encode(), AES.MODE_ECB) padded_data = pad(data.encode(), AES.block_size) return cipher.encrypt(padded_data).hex() def aes_decrypt(key, encrypted_data): cipher = AES.new(key.encode(), AES.MODE_ECB) decrypted_data = cipher.decrypt(bytes.fromhex(encrypted_data)) return unpad(decrypted_data, AES.block_size).decode()
Java:
import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; import java.util.Base64; public class AESExample { public static String encrypt(String key, String data) throws Exception { SecretKeySpec secretKey = new SecretKeySpec(key.getBytes(), "AES"); Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); cipher.init(Cipher.ENCRYPT_MODE, secretKey); return Base64.getEncoder().encodeToString(cipher.doFinal(data.getBytes())); } public static String decrypt(String key, String encryptedData) throws Exception { SecretKeySpec secretKey = new SecretKeySpec(key.getBytes(), "AES"); Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); cipher.init(Cipher.DECRYPT_MODE, secretKey); return new String(cipher.doFinal(Base64.getDecoder().decode(encryptedData))); } }
JavaScript:
const CryptoJS = require('crypto-js'); function aesEncrypt(key, data) { return CryptoJS.AES.encrypt(data, key).toString(); } function aesDecrypt(key, encryptedData) { const bytes = CryptoJS.AES.decrypt(encryptedData, key); return bytes.toString(CryptoJS.enc.Utf8); }
PHP:
function aesEncrypt($key, $data) { return openssl_encrypt($data, 'AES-128-ECB', $key, 0); } function aesDecrypt($key, $encryptedData) { return openssl_decrypt($encryptedData, 'AES-128-ECB', $key, 0); }
注意事项
- AES密钥长度必须为16/24/32位
- 加密和解密必须使用相同的密钥、模式和填充方式
- 请妥善保管密钥,密钥泄露将导致数据被破解