AES(Advanced Encryption Standard)是一种对称加密算法,广泛应用于数据加密和保护领域。它支持多种密钥长度(128位、192位和256位),并且被认为是一种高效且安全的加密算法。
AES加密和解密可以通过C#和JavaScript来实现。
在C#中,可以使用System.Security.Cryptography命名空间下的AesManaged类来实现AES加密和解密。以下是一个示例代码:
using System;
using System.Security.Cryptography;
using System.Text;
public class AesEncryption
{
public static string Encrypt(string plainText, string key, string iv)
{
byte[] keyBytes = Encoding.UTF8.GetBytes(key);
byte[] ivBytes = Encoding.UTF8.GetBytes(iv);
using (AesManaged aes = new AesManaged())
{
aes.Key = keyBytes;
aes.IV = ivBytes;
ICryptoTransform encryptor = aes.CreateEncryptor(aes.Key, aes.IV);
byte[] encryptedBytes = null;
using (var ms = new System.IO.MemoryStream())
{
using (var cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write))
{
using (var sw = new System.IO.StreamWriter(cs))
{
sw.Write(plainText);
}
encryptedBytes = ms.ToArray();
}
}
return Convert.ToBase64String(encryptedBytes);
}
}
public static string Decrypt(string encryptedText, string key, string iv)
{
byte[] keyBytes = Encoding.UTF8.GetBytes(key);
byte[] ivBytes = Encoding.UTF8.GetBytes(iv);
byte[] encryptedBytes = Convert.FromBase64String(encryptedText);
using (AesManaged aes = new AesManaged())
{
aes.Key = keyBytes;
aes.IV = ivBytes;
ICryptoTransform decryptor = aes.CreateDecryptor(aes.Key, aes.IV);
string decryptedText = null;
using (var ms = new System.IO.MemoryStream(encryptedBytes))
{
using (var cs = new CryptoStream(ms, decryptor, CryptoStreamMode.Read))
{
using (var sr = new System.IO.StreamReader(cs))
{
decryptedText = sr.ReadToEnd();
}
}
}
return decryptedText;
}
}
}
在JavaScript中,可以使用CryptoJS库来实现AES加密和解密。以下是一个示例代码:
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/crypto-js.min.js"></script>
<script>
function encrypt(plainText, key, iv) {
var keyBytes = CryptoJS.enc.Utf8.parse(key);
var ivBytes = CryptoJS.enc.Utf8.parse(iv);
var encrypted = CryptoJS.AES.encrypt(plainText, keyBytes, {
iv: ivBytes,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
return encrypted.toString();
}
function decrypt(encryptedText, key, iv) {
var keyBytes = CryptoJS.enc.Utf8.parse(key);
var ivBytes = CryptoJS.enc.Utf8.parse(iv);
var decrypted = CryptoJS.AES.decrypt(encryptedText, keyBytes, {
iv: ivBytes,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
return decrypted.toString(CryptoJS.enc.Utf8);
}
</script>
以上代码示例中,Encrypt
函数用于AES加密,Decrypt
函数用于AES解密。需要传入明文、密钥和初始化向量(IV)作为参数。
AES加密和解密的应用场景包括但不限于:
腾讯云提供了多个与AES加密相关的产品和服务,包括:
请注意,以上仅为示例代码和腾讯云相关产品的介绍,实际使用时需要根据具体需求和场景进行适配和配置。
领取专属 10元无门槛券
手把手带您无忧上云