

.net 決議后數值是24位,并提示IV 錯誤 按照AES規則IV向量是16位,Java 是16位
uj5u.com熱心網友回復:
Encoding.Default,是指當前系統設定的“默認字符集編碼方式”換成Encoding.UTF8再試試uj5u.com熱心網友回復:
public static string Decode(string cipherText)
{
var toEncryptArray = Convert.FromBase64String(cipherText);
var rm = new System.Security.Cryptography.RijndaelManaged()
{
Key = Convert.FromBase64String("GFqjnlbHe46v40/jEZO88Q=="),
Mode = CipherMode.ECB,
Padding = PaddingMode.None
};
var cTransform = rm.CreateDecryptor();
var resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
resultArray = FixBytes_Decode(resultArray);
return Encoding.UTF8.GetString(resultArray);
}
private static byte[] FixBytes_Decode(byte[] d_Bytes)
{
var temp = d_Bytes.ToList();
int remove_Count = temp.LastOrDefault();
temp = temp.Take(temp.Count - remove_Count).ToList();
return temp.ToArray();
}
參考下吧
uj5u.com熱心網友回復:
問題找到了,服務器直接對key 進行解碼操作,.net 必須先轉成Base64,在進行解碼,不然解碼錯誤。導致IV向量byte陣列變成24,導致例外或者加密失敗。對于這個問題有好的解決方式不:
uj5u.com熱心網友回復:
key值在java圖片上是content,用來.net 和Java小哥加密結果不同的轉載請註明出處,本文鏈接:https://www.uj5u.com/net/12965.html
標籤:.NET技術前瞻
