AES加密 对应的 C#/JAVA 方法
时间: 2023-12-01 21:04:57 浏览: 66
在 C# 和 Java 中,可以使用相应的内置类库来实现 AES 加密。
在 C# 中,可以使用 System.Security.Cryptography 命名空间下的 Aes 类来实现 AES 加密。以下是一个简单的加密示例:
```csharp
using System;
using System.IO;
using System.Security.Cryptography;
class AesExample
{
static void Main()
{
// 加密的密钥和 IV
byte[] key = new byte[32];
byte[] iv = new byte[16];
// 随机生成密钥和 IV
using (Aes aes = Aes.Create())
{
aes.GenerateKey();
aes.GenerateIV();
key = aes.Key;
iv = aes.IV;
}
string plaintext = "Hello, world!";
// 加密
byte[] ciphertext;
using (Aes aes = Aes.Create())
{
aes.Key = key;
aes.IV = iv;
ICryptoTransform encryptor = aes.CreateEncryptor();
using (MemoryStream ms = new MemoryStream())
{
using (CryptoStream cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write))
{
using (StreamWriter sw = new StreamWriter(cs))
{
sw.Write(plaintext);
}
ciphertext = ms.ToArray();
}
}
}
Console.WriteLine(Convert.ToBase64String(ciphertext));
}
}
```
在 Java 中,可以使用 javax.crypto 包下的 Cipher 类来实现 AES 加密。以下是一个简单的加密示例:
```java
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
public class AesExample {
public static void main(String[] args) throws Exception {
// 加密的密钥和 IV
byte[] key = new byte[32];
byte[] iv = new byte[16];
// 随机生成密钥和 IV
SecretKeySpec keySpec = new SecretKeySpec(key, "AES");
IvParameterSpec ivSpec = new IvParameterSpec(iv);
String plaintext = "Hello, world!";
// 加密
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec);
byte[] ciphertext = cipher.doFinal(plaintext.getBytes(StandardCharsets.UTF_8));
System.out.println(Base64.getEncoder().encodeToString(ciphertext));
}
}
```
需要注意的是,在实际使用中,需要使用安全的随机数生成器来生成密钥和 IV。此外,还需要考虑密钥管理和密钥交换等问题。
阅读全文