C# AES/ECB/PKCS5Padding实现AES的加密及解密

最近开发中遇到了C# 中使用AES/ECB/PKCS5Padding进行加解密操作,之前每次使用都得网上找资料,记录方便后期使用。

using Org.BouncyCastle.Crypto;
using Org.BouncyCastle.Crypto.Parameters;
using Org.BouncyCastle.Security;
using Org.BouncyCastle.Utilities;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Common
{
internal class AESHelper
{
public static string AESDecrypt(string strinput, string strkey)
{
try
{
string dummyData = strinput.Trim().Replace("%", "").Replace(",", "").Replace(" ", "+").Replace("_","/").Replace("-","+");
if (dummyData.Length % 4 > 0)
{
dummyData = dummyData.PadRight(dummyData.Length + 4 - dummyData.Length % 4, '=');
}
byte[] inputArray = Convert.FromBase64String(dummyData);
byte[] key = Encoding.UTF8.GetBytes(strkey);
IBufferedCipher cipher = CipherUtilities.GetCipher("AES/ECB/PKCS5Padding");
cipher.Init(false, AesKey(strkey));
// cipher.Init(false, new ParametersWithIV(new DesParameters(key), key)); 带IV向量的算法可以用到。
byte[] rv = new byte[cipher.GetOutputSize(inputArray.Length)];
int tam = cipher.ProcessBytes(inputArray, 0, inputArray.Length, rv, 0);
cipher.DoFinal(rv, tam);
return Encoding.UTF8.GetString(rv);
}
catch (Exception ex)
{
return "";
}
}
public static string AESEncrypt(string strinput, string strkey)
{
try
{
byte[] inputArray = Encoding.UTF8.GetBytes(strinput);
byte[] key = Encoding.UTF8.GetBytes(strkey);
IBufferedCipher cipher = CipherUtilities.GetCipher("AES/ECB/PKCS5Padding");
//cipher.Init(true, new ParametersWithIV(new DesParameters(key), key));
cipher.Init(true, AesKey(strkey));
byte[] rv = new byte[cipher.GetOutputSize(inputArray.Length)];
int tam = cipher.ProcessBytes(inputArray, 0, inputArray.Length, rv, 0);
cipher.DoFinal(rv, tam);
return Convert.ToBase64String(rv);
}
catch (Exception ex)
{
return "";
}
}
public static KeyParameter AesKey(String key)
{
byte[] bs = Encoding.Default.GetBytes(key);
if (bs.Length != 16)
{
bs = Arrays.CopyOf(bs, 16);// 处理数组长度为16(不足16位,不空;超过16位取前16位)
}
return new KeyParameter(bs);
}
}
}
posted @   星火燎猿*  阅读(1928)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示