AES加密(java和C#)
发布人:shili8
发布时间:2024-01-14 16:21
阅读次数:140
AES加密是一种对称加密算法,它使用相同的密钥进行加密和解密。在本文中,我们将使用Java和C#分别实现AES加密算法,并提供部分代码示例和代码注释。
首先,让我们来看看如何在Java中实现AES加密算法。
javaimport javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; import java.util.Base64; public class AESEncryption { public static String encrypt(String plainText, String key) throws Exception { Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); SecretKeySpec secretKey = new SecretKeySpec(key.getBytes(), "AES"); cipher.init(Cipher.ENCRYPT_MODE, secretKey); byte[] encryptedText = cipher.doFinal(plainText.getBytes()); return Base64.getEncoder().encodeToString(encryptedText); } public static String decrypt(String encryptedText, String key) throws Exception { Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); SecretKeySpec secretKey = new SecretKeySpec(key.getBytes(), "AES"); cipher.init(Cipher.DECRYPT_MODE, secretKey); byte[] decryptedText = cipher.doFinal(Base64.getDecoder().decode(encryptedText)); return new String(decryptedText); } public static void main(String[] args) throws Exception { String plainText = "Hello, AES!"; String key = "thisisakey123456"; String encryptedText = encrypt(plainText, key); System.out.println("Encrypted Text: " + encryptedText); String decryptedText = decrypt(encryptedText, key); System.out.println("Decrypted Text: " + decryptedText); } }
上面的代码演示了如何使用Java实现AES加密算法。我们首先创建了一个`AESEncryption`类,其中包含了`encrypt`和`decrypt`方法来进行加密和解密操作。在`main`方法中,我们使用了这两个方法来加密和解密文本,并打印出结果。
接下来,让我们来看看如何在C#中实现AES加密算法。
csharpusing System; using System.Security.Cryptography; using System.Text; public class AESEncryption{ public static string Encrypt(string plainText, string key) { byte[] plainBytes = Encoding.UTF8.GetBytes(plainText); using (Aes aes = Aes.Create()) { aes.Key = Encoding.UTF8.GetBytes(key); aes.Mode = CipherMode.ECB; aes.Padding = PaddingMode.PKCS7; ICryptoTransform encryptor = aes.CreateEncryptor(aes.Key, aes.IV); byte[] encryptedBytes = encryptor.TransformFinalBlock(plainBytes,0, plainBytes.Length); return Convert.ToBase64String(encryptedBytes); } } public static string Decrypt(string encryptedText, string key) { byte[] encryptedBytes = Convert.FromBase64String(encryptedText); using (Aes aes = Aes.Create()) { aes.Key = Encoding.UTF8.GetBytes(key); aes.Mode = CipherMode.ECB; aes.Padding = PaddingMode.PKCS7; ICryptoTransform decryptor = aes.CreateDecryptor(aes.Key, aes.IV); byte[] decryptedBytes = decryptor.TransformFinalBlock(encryptedBytes,0, encryptedBytes.Length); return Encoding.UTF8.GetString(decryptedBytes); } } public static void Main() { string plainText = "Hello, AES!"; string key = "thisisakey123456"; string encryptedText = Encrypt(plainText, key); Console.WriteLine("Encrypted Text: " + encryptedText); string decryptedText = Decrypt(encryptedText, key); Console.WriteLine("Decrypted Text: " + decryptedText); } }
上面的代码演示了如何使用C#实现AES加密算法。我们同样创建了一个`AESEncryption`类,其中包含了`Encrypt`和`Decrypt`方法来进行加密和解密操作。在`Main`方法中,我们使用了这两个方法来加密和解密文本,并打印出结果。
通过以上代码示例,我们可以看到如何在Java和C#中实现AES加密算法,并且可以通过密钥来加密和解密文本。这种对称加密算法可以用于保护敏感数据的安全传输和存储。