【发布时间】:2012-05-13 22:24:37
【问题描述】:
以下加密和解密算法通过 powershell 和共享点应用程序页面调用:
public static string Encrypt(string dataToEncrypt, string password, string salt)
{
AesManaged aes = null;
MemoryStream memoryStream = null;
CryptoStream cryptoStream = null;
try
{
Rfc2898DeriveBytes rfc2898 = new Rfc2898DeriveBytes(password, Encoding.UTF8.GetBytes(salt), 10000);
aes = new AesManaged();
aes.Key = rfc2898.GetBytes(32);
aes.IV = rfc2898.GetBytes(16);
memoryStream = new MemoryStream();
cryptoStream = new CryptoStream(memoryStream, aes.CreateEncryptor(), CryptoStreamMode.Write);
byte[] data = Encoding.UTF8.GetBytes(dataToEncrypt);
cryptoStream.Write(data, 0, data.Length);
cryptoStream.FlushFinalBlock();
return Convert.ToBase64String(memoryStream.ToArray());
}
finally
{
if (cryptoStream != null)
cryptoStream.Close();
if (memoryStream != null)
memoryStream.Close();
if (aes != null)
aes.Clear();
}
}
为什么加密的字符串会改变?是关于应用领域的吗?
【问题讨论】:
-
可能是因为添加了随机填充以避免 MITM 攻击。
-
我试过你的代码,不管应用程序域如何,它似乎都会生成相同的结果。您确定没有其他转换吗?
-
@Oded:当我将填充定义为无时,问题仍然存在。
-
@w0lf:我确信没有任何其他转换。
标签: .net sharepoint encryption powershell aes