JAVA版本(使用AESUtils工具类)
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
public class AESUtils {
//实际的加密解密操作
private static byte[] Operation(byte[] src,String key,int mode) throws Exception{
if (key==null) {
System.out.println("Key不能为空");
return null;
}
if (key.length()!=16) {
System.out.println("Key需要16位长度");
return null;
}
byte[] raw=key.getBytes("utf-8");
SecretKeySpec keySpec=new SecretKeySpec(raw, "AES");
Cipher cipher=Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(mode, keySpec);
byte[] encrypted=cipher.doFinal(src);
return encrypted;
}
public static byte[] Encrypt(byte[] src,String key) throws Exception{
return Operation(src, key, Cipher.ENCRYPT_MODE);
}
public static byte[] Decrypt(byte[] src,String key) throws Exception{
return Operation(src, key, Cipher.DECRYPT_MODE);
}
}
C#版本(AES工具类)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Security.Cryptography;
using System.IO;
namespace AESTest
{
class AESHelper
{
private static byte[] Operation(byte[] src,string strKey,bool isEncrypt)
{
if (string.IsNullOrEmpty(strKey))
return null;
RijndaelManaged rm = new RijndaelManaged
{
Key = Encoding.UTF8.GetBytes(strKey),
Mode = CipherMode.ECB,
Padding = PaddingMode.PKCS7
};
ICryptoTransform cTransform;
if(isEncrypt)
{
cTransform = rm.CreateEncryptor();
}
else
{
cTransform = rm.CreateDecryptor();
}
byte[] resultArray = cTransform.TransformFinalBlock(src, 0, src.Length);
return resultArray;
}
public static byte[] Encrypt(byte[] src, string strKey)
{
return Operation(src, strKey, true);
}
public static byte[] Decrypt(byte[] src, string strKey)
{
return Operation(src, strKey, false);
}
}
}