aes c# java_AES加密 对应的 C#/JAVA 方法

这篇博客分享了如何使用C#和Java实现AES加密解密的方法,包括加密和解密的完整代码,涉及Base64编码、16进制转换等步骤。
摘要由CSDN通过智能技术生成

由于最近在项目中用到,之前在网上找了好多,来来回回,终于整出来了。 贴出来以后用起来方便

C#

[csharp] view plaincopyprint?

#region AES加解密

///

///AES加密(加密步骤)///1,加密字符串得到2进制数组;///2,将2禁止数组转为16进制;///3,进行base64编码///

/// 要加密的字符串

/// 密钥

publicString Encrypt(String toEncrypt, String key)

{

Byte[] _Key=Encoding.ASCII.GetBytes(key);

Byte[] _Source=Encoding.UTF8.GetBytes(toEncrypt);

Aes aes= Aes.Create("AES");

aes.Mode=CipherMode.ECB;

aes.Padding=PaddingMode.PKCS7;

aes.Key=_Key;

ICryptoTransform cTransform=aes.CreateEncryptor();

Byte[] cryptData= cTransform.TransformFinalBlock(_Source, 0, _Source.Length);

String HexCryptString=Hex_2To16(cryptData);

Byte[] HexCryptData=Encoding.UTF8.GetBytes(HexCryptString);

String CryptString=Convert.ToBase64String(HexCryptData);returnCryptString;

}///

///AES解密(解密步骤)///1,将BASE64字符串转为16进制数组///2,将16进制数组转为字符串///3,将字符串转为2进制数据///4,用AES解密数据///

/// 已加密的内容

/// 密钥

public String Decrypt(string encryptedSource, stringkey)

{

Byte[] _Key=Encoding.ASCII.GetBytes(key);

Aes aes= Aes.Create("AES");

aes.Mode=CipherMode.ECB;

aes.Padding=PaddingMode.PKCS7;

aes.Key=_Key;

ICryptoTransform cTransform=aes.CreateDecryptor();

Byte[] encryptedData=Convert.FromBase64String(encryptedSource);

String encryptedString=Encoding.UTF8.GetString(encryptedData);

Byte[] _Source=Hex_16To2(encryptedString);

Byte[] originalSrouceData= cTransform.TransformFinalBlock(_Source, 0, _Source.Length);

String originalString=Encoding.UTF8.GetString(originalSrouceData);returnoriginalString;

}///

///2进制转16进制///

String Hex_2To16(Byte[] bytes)

{

String hexString=String.Empty;

Int32 iLength= 65535;if (bytes != null)

{

StringBuilder strB= newStringBuilder();if (bytes.Length

{

iLength=bytes.Length;

}for (int i = 0; i < iLength; i++)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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。此外,还需要考虑密钥管理和密钥交换等问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值