帮我分析一下这个C#的解密函数

来源:百度知道 编辑:UC知道 时间:2024/06/08 04:37:58
public string DecryptData(string text, byte[] Key, byte[] IV)
{
byte[] Bytes= Encoding.UTF8.GetBytes(text);
//创建解密用的内存流,存放密文
MemoryStream ms = new MemoryStream(Bytes);

//创建解密服务
CryptoStream crytoStream = new CryptoStream(ms,
new TripleDESCryptoServiceProvider().CreateDecryptor(Key, IV),
CryptoStreamMode.Read);

//把待解密的字符串转换为字节数组
byte[] toDecrypt = new byte[Bytes.Length];

//下面开始加密
try
{
//--------------------执行解密----------------------------//
crytoStream.Read(toDecrypt, 0, toDecrypt.Length);

//-------------------------------------------------//
string txt = Encoding.UTF8.GetString(toDecrypt);
return txt;
}

byte[] Bytes= Encoding.UTF8.GetBytes(text);
这个是按照UTF-8编码,获取text的字节(就是把每个字符都按照UTF8的编码转为对应的16进制字节,UTF8大部分是3字节的,ASCII部分是1字节)
你那很多都有注释啊
不过他是在内存中操作的数据流
CryptoStream 建立了一个解密用的数据流
语法
public CryptoStream(
Stream stream,
ICryptoTransform transform,
CryptoStreamMode mode
)

new TripleDESCryptoServiceProvider().CreateDecryptor(Key, IV),想必就是按照TripleDES 算法来处理吧,建立一个解密器,然后按照你提供的密钥(key)和初始化向量(IV)来处理解密的行为,总之就是按照这个加密转换来处理内存数据流
byte[] toDecrypt 这个数组是用来存储你下面解密过程(read方法那个)解密的数据的
你自己好好琢磨下·······