你並沒有顯示該字符串的加密方式,無論您是使用相同的密鑰和IV,等等...這是一個完整的工作例如,你可以適應您的方案:
class Program
{
private static byte[] DESKey = { 200, 5, 78, 232, 9, 6, 0, 4 };
private static byte[] DESInitializationVector = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
static void Main()
{
var encrypted = Encrypt("foo bar");
Console.WriteLine(encrypted);
var decrypted = Decrypt(encrypted);
Console.WriteLine(decrypted);
}
public static string Encrypt(string value)
{
using (var cryptoProvider = new DESCryptoServiceProvider())
using (var memoryStream = new MemoryStream())
using (var cryptoStream = new CryptoStream(memoryStream, cryptoProvider.CreateEncryptor(DESKey, DESInitializationVector), CryptoStreamMode.Write))
using (var writer = new StreamWriter(cryptoStream))
{
writer.Write(value);
writer.Flush();
cryptoStream.FlushFinalBlock();
writer.Flush();
return Convert.ToBase64String(memoryStream.GetBuffer(), 0, (int)memoryStream.Length);
}
}
public static string Decrypt(string value)
{
using(var cryptoProvider = new DESCryptoServiceProvider())
using(var memoryStream = new MemoryStream(Convert.FromBase64String(value)))
using(var cryptoStream = new CryptoStream(memoryStream, cryptoProvider.CreateDecryptor(DESKey, DESInitializationVector), CryptoStreamMode.Read))
using(var reader = new StreamReader(cryptoStream))
{
return reader.ReadToEnd();
}
}
}
你可以看看byteArray的長度?如果我記得正確的話,它應該是DES的8倍。 – DReJ 2011-01-06 09:08:24