在使用RijndaelManaged加密时,padding设置为PaddingMode.None(因为对接java的接口,对方的加密方式没有填充物,如果设置其他的值,则加密出来的文本和对方不一致),导致报错没有填充物。
以下是我的加密的方法,麻烦给位给看看,找了好几天的文档也没有结果
/// <summary>
/// AES 加密
/// </summary>
/// <param name="str">明文(待加密)</param>
/// <param name="key">密文</param>
/// <returns></returns>
public static string AesEncrypt(string str, string key)
{
if (string.IsNullOrEmpty(str)) return null;
Byte[] toEncryptArray = Encoding.UTF8.GetBytes(str);
System.Security.Cryptography.RijndaelManaged rm = new System.Security.Cryptography.RijndaelManaged
{
Mode = CipherMode.ECB,
Padding = PaddingMode.None,
Key = Encoding.UTF8.GetBytes(key),
};
var cTransform = rm.CreateEncryptor();
Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);//报错点 报错信息为 {"The input data is not a complete block."}
string res = Convert.ToBase64String(resultArray, 0, resultArray.Length);
return res;
}
报错信息为 {"The input data is not a complete block."}