我试图理解TripleDES加密的简单代码,看看它是如何工作的。我在谷歌上见过很多代码。其中一些使用TripleDES类,有些使用TripleDESCryptoServiceProvider类。我只知道第二个是从第一个继承下来的。
TripleDES类:(只显示购买部分)
static void Main(string[] args)
{
TripleDES TripleDESalg = TripleDES.Create("TripleDES");
string sData = "Here is some data to encrypt.";
byte[] Data = EncryptTextToMemory(sData, TripleDESalg.Key, TripleDESalg.IV);
string Final = DecryptTextFromMemory(Data, TripleDESalg.Key, TripleDESalg.IV);
Console.WriteLine(Final);
Console.ReadLine();
}
public static byte[] EncryptTextToMemory(string Data, byte[] Key, byte[] IV)
{
MemoryStream mStream = new MemoryStream();
TripleDES tripleDESalg = TripleDES.Create();
CryptoStream cStream = new CryptoStream(mStream, tripleDESalg.CreateEncryptor(Key, IV), CryptoStreamMode.Write);
byte[] toEncrypt = new ASCIIEncoding().GetBytes(Data);
cStream.Write(toEncrypt, 0, toEncrypt.Length);
cStream.FlushFinalBlock();
byte[] ret = mStream.ToArray();
cStream.Close();
mStream.Close();
return ret;
}和TripleDESCryptoServiceProvider类:(只有加密代码)
static void Main(string[] args)
{
TripleDESCryptoServiceProvider tDESalg = new TripleDESCryptoServiceProvider();
string sData = "Here is some data to encrypt.";
byte[] Data = EncryptTextToMemory(sData, tDESalg.Key, tDESalg.IV);
string Final = DecryptTextFromMemory(Data, tDESalg.Key, tDESalg.IV);
Console.WriteLine(Final);
Console.ReadLine();
}
public static byte[] EncryptTextToMemory(string Data, byte [] key, byte[] iv)
{
MemoryStream mStream = new MemoryStream();
CryptoStream cStream = new CryptoStream(mStream,
new TripleDESCryptoServiceProvider().CreateEncryptor(key, iv ),
CryptoStreamMode.Write);
byte[] toEncrypt = new ASCIIEncoding().GetBytes(Data);
cStream.Write(toEncrypt, 0, toEncrypt.Length);
cStream.FlushFinalBlock();
byte[] ret = mStream.ToArray();
cStream.Close();
mStream.Close();
return ret;
}这两个代码工作良好,99%相同。但我的问题是
提前谢谢。
发布于 2014-05-25 01:54:55
TripleDESCryptoServiceProvider使用加密服务提供商CSP,它可能是一个软件实现,但也可以表示智能卡上的实现。TripleDESCryptoServiceProvider;这使得切换CSP(为了增加安全性或速度)成为可能。FlushFinalBlock是TransformFinalBlock的流版本。它表明,可以对流上的数据执行最后一次计算。TransformFinalBlock还执行最后一次计算,但使用给定的数据并返回实际结果。https://stackoverflow.com/questions/23849882
复制相似问题