900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > C# 实现DES加密解密

C# 实现DES加密解密

时间:2022-08-25 08:18:45

相关推荐

C# 实现DES加密解密

DES算法是一种最通用的对称密钥算法,因为算法本身是公开的,所以其安全性在于密钥的安全性。基于密钥的算法通常有两类:对称算法和公开密钥算法。对称算法的对称性体现在加密密钥能够从解密密钥推算出来,反之亦然。在大多数对称算法中,加解密的密钥是相同的,DES就是这样。可见,对称密钥算法的加解密密钥都是保密的。而公开密钥算法的加密密钥是公开的,解密密钥是保密的。

DES 加密算法的整体流程图如图1-6。

因为在VS编译器中,WPF项目可以调用类库函数,所以实现des的加密解密较为简单。主要用到C#提供的以下三个类:

MemoryStream 内存流

DESCryptoServiceProvider 加密服务提供者类

CryptoStream 讲数据流连接到加密转换的流

具体函数如图1-7所示(加密函数传入参数是明文str和密钥sKey;解密函数传入参数是密文pToDecrypt和密钥sKey):

class des{public static string EncryptString(string str, string sKey){DESCryptoServiceProvider des = new DESCryptoServiceProvider();byte[] inputByteArray = Encoding.Default.GetBytes(str);des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);// 密匙des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);// 初始化向量MemoryStream ms = new MemoryStream();CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);cs.Write(inputByteArray, 0, inputByteArray.Length);cs.FlushFinalBlock();var retB = Convert.ToBase64String(ms.ToArray());return retB;}//解密public static string DecryptString(string pToDecrypt, string sKey){DESCryptoServiceProvider des = new DESCryptoServiceProvider();byte[] inputByteArray = Convert.FromBase64String(pToDecrypt);des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);MemoryStream ms = new MemoryStream();CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);cs.Write(inputByteArray, 0, inputByteArray.Length);// 如果两次密匙不一样,这一步可能会引发异常cs.FlushFinalBlock();return System.Text.Encoding.Default.GetString(ms.ToArray());}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。