無意間拿到了一段代碼,請問如果解密
登錄 部分
User.UserPsd != new Encryption().AESEncrypt(UserPsd, "www.baidu.com", "aoiohasoahod");
public string AESEncrypt(string Data, string Key = "www.baidu.com", string Vector = "aoiohasoahod")
{
byte[] bytes = Encoding.UTF8.GetBytes(Data);
byte[] array = new byte[32];
Array.Copy(Encoding.UTF8.GetBytes(Key.PadRight(array.Length)), array, array.Length);
byte[] array2 = new byte[16];
Array.Copy(Encoding.UTF8.GetBytes(Vector.PadRight(array2.Length)), array2, array2.Length);
byte[] inArray = null;
Rijndael rijndael = Rijndael.Create();
using (MemoryStream memoryStream = new MemoryStream())
{
using (CryptoStream cryptoStream = new CryptoStream(memoryStream, rijndael.CreateEncryptor(array, array2), CryptoStreamMode.Write))
{
cryptoStream.Write(bytes, 0, bytes.Length);
cryptoStream.FlushFinalBlock();
inArray = memoryStream.ToArray();
}
}
return Convert.ToBase64String(inArray);
代碼就是這樣的,請問這種的可以解密嘛,或者我用在線解密平臺應該如何選擇解密模式,能解答的希望大佬留個聯系方式,就200積分券送了
uj5u.com熱心網友回復:
主要把rijndael.CreateEncryptor換成rijndael.CreateDecryptor。var base64 = AESEncrypt("hello"); // base64 = 'GTRHcC5wMMt+Y/z3hs/xyA=='
var plain = AESDecrypt(base64); // plain= 'hello'
public string AESDecrypt(string Data, string Key = "www.baidu.com", string Vector = "aoiohasoahod")
{
byte[] bytes = Convert.FromBase64String(Data);
byte[] array = new byte[32];
Array.Copy(Encoding.UTF8.GetBytes(Key.PadRight(array.Length)), array, array.Length);
byte[] array2 = new byte[16];
Array.Copy(Encoding.UTF8.GetBytes(Vector.PadRight(array2.Length)), array2, array2.Length);
Rijndael rijndael = Rijndael.Create();
using (MemoryStream memoryStream = new MemoryStream(bytes))
{
using (CryptoStream cryptoStream = new CryptoStream(memoryStream, rijndael.CreateDecryptor(array, array2), CryptoStreamMode.Read))
using (var reader = new StreamReader(cryptoStream, Encoding.UTF8))
{
return reader.ReadToEnd();
}
}
}
uj5u.com熱心網友回復:
在線解密可以用AES256
CBC with PKCS7
KEY和IV就是函式的2個引數,注意KEY長度是32,IV的長度是16,長度不夠在后面填充空格
uj5u.com熱心網友回復:
public string AESDecrypt(string Data, string Key = "www.baidu.com", string Vector = "aoiohasoahod"){
byte[] bytes = Convert.FromBase64String(Data);
byte[] array = new byte[32];
Array.Copy(Encoding.UTF8.GetBytes(Key.PadRight(array.Length)), array, array.Length);
byte[] array2 = new byte[16];
Array.Copy(Encoding.UTF8.GetBytes(Vector.PadRight(array2.Length)), array2, array2.Length);
Rijndael rijndael = Rijndael.Create();
using (MemoryStream memoryStream = new MemoryStream(bytes))
{
using (CryptoStream cryptoStream = new CryptoStream(memoryStream, rijndael.CreateDecryptor(array, array2), CryptoStreamMode.Read))
using (var reader = new StreamReader(cryptoStream, Encoding.UTF8))
{
return reader.ReadToEnd();
}
}
}
uj5u.com熱心網友回復:
第一次發帖 請問這里可以留QQ嘛uj5u.com熱心網友回復:
這是3des加密那個 密鑰 和向量 必須 初始化 也就是用0填充后再進行陣列copy(Array.Copy)轉載請註明出處,本文鏈接:https://www.uj5u.com/net/123677.html
標籤:C#
