AES(Advanced Encryption Standard)是一种对称加密算法,它在Java中可以用于加密数据,而在C#中可以用于解密数据。
AES加密算法是目前应用最广泛的加密算法之一,它具有高安全性、高效率和可靠性的特点。AES算法支持不同的密钥长度,包括128位、192位和256位。较长的密钥长度可以提供更高的安全性,但也会增加计算成本。
在Java中,可以使用javax.crypto包中的Cipher类来实现AES加密。首先,需要生成一个AES密钥,然后使用该密钥初始化Cipher对象,并指定加密模式和填充方式。接下来,可以使用Cipher的encrypt方法对数据进行加密。
以下是一个示例代码:
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.security.SecureRandom;
public class AESEncryptionExample {
public static void main(String[] args) throws Exception {
String plaintext = "Hello, World!";
String key = "0123456789abcdef"; // 16字节的密钥
byte[] encrypted = encrypt(plaintext, key);
System.out.println("加密后的数据:" + new String(encrypted, StandardCharsets.UTF_8));
String decrypted = decrypt(encrypted, key);
System.out.println("解密后的数据:" + decrypted);
}
public static byte[] encrypt(String plaintext, String key) throws Exception {
SecretKeySpec secretKey = new SecretKeySpec(key.getBytes(StandardCharsets.UTF_8), "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
return cipher.doFinal(plaintext.getBytes(StandardCharsets.UTF_8));
}
public static String decrypt(byte[] ciphertext, String key) throws Exception {
SecretKeySpec secretKey = new SecretKeySpec(key.getBytes(StandardCharsets.UTF_8), "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, secretKey);
byte[] decrypted = cipher.doFinal(ciphertext);
return new String(decrypted, StandardCharsets.UTF_8);
}
}
在C#中,可以使用System.Security.Cryptography命名空间中的Aes类来实现AES解密。首先,需要生成一个AES密钥,然后使用该密钥初始化Aes对象,并指定解密模式和填充方式。接下来,可以使用Aes的CreateDecryptor方法对数据进行解密。
以下是一个示例代码:
using System;
using System.Security.Cryptography;
using System.Text;
class AESDecryptionExample
{
static void Main()
{
byte[] ciphertext = Convert.FromBase64String("..."); // 加密后的数据
string key = "0123456789abcdef"; // 16字节的密钥
string decrypted = Decrypt(ciphertext, key);
Console.WriteLine("解密后的数据:" + decrypted);
}
static string Decrypt(byte[] ciphertext, string key)
{
using (Aes aes = Aes.Create())
{
aes.Key = Encoding.UTF8.GetBytes(key);
aes.Mode = CipherMode.ECB;
aes.Padding = PaddingMode.PKCS7;
ICryptoTransform decryptor = aes.CreateDecryptor();
byte[] decrypted = decryptor.TransformFinalBlock(ciphertext, 0, ciphertext.Length);
return Encoding.UTF8.GetString(decrypted);
}
}
}
AES加密和解密在实际应用中具有广泛的应用场景,例如保护敏感数据、加密通信、数字签名等。腾讯云提供了多个与AES加密相关的产品和服务,例如云加密机(KMS)、云HSM(Key Management Service)等,可以帮助用户更好地保护数据安全。
更多关于AES加密和解密的信息,可以参考腾讯云的文档:
领取专属 10元无门槛券
手把手带您无忧上云