2019年C#常用散列算法与加解密算法使用.docVIP

  • 4
  • 0
  • 约6.32千字
  • 约 4页
  • 2019-04-15 发布于天津
  • 举报

2019年C#常用散列算法与加解密算法使用.doc

C# 常用散列算法与加解密算法使用 在应用系统开发中,安全涉及的机密性、完整性、身份认证都需要散列算法或加解密算法的参与,C# 提供了常用的散列算法和加解密算法类,利用这些类,我们可以方便地实现所需功能。 散列算法 散列算法是把任意长度的输入,变换成固定长度的输出,且不能由输出推算出输入,这里的输出,也就是我们常说的散列值。理论上来说,存在两个不同的输入,经过散列算法后获得相同的散列值,但是由于要找到这样的一组输入,几乎是不可能的任务,所以我们可以认为世界万事万物中不存在拥有相同散列值的事物(尽管实际是存在的),鉴于散列算法的这种特性,它常常被用于文件校验、密码存储、数字签名等场合。 常用的散列算法是 MD5、SHA-1(程序中受特殊字符限制,常常用 SHA1 表示),在 C# 中有多种方式可以创建 MD5、SHA1 的散列值。 法一、使用 FormsAuthentication。 FormsAuthentication 类的命名空间是 System.Web.Security,在 ASP.NET 环境中可以直接使用,但在 VC# 环境中,需要先在引用中添加程序集 System.Web,该程序集位于类似 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Web.dll 的地方。 FormsAuthentication.HashPasswordForStoringInConfigFile(明文, MD5); FormsAuthentication.HashPasswordForStoringInConfigFile(明文, SHA1); 如上第二个参数指明了要使用哪种散列算法,不区分大小写 法二、使用 HashAlgorithm。 HashAlgorithm 类的命名空间是 System.Security.Cryptography。 using (HashAlgorithm hash = HashAlgorithm.Create(SHA1)) { string plaintext = 明文; byte[] plaintextBytes = Encoding.UTF8.GetBytes(plaintext); byte[] hashValueBytes = hash.ComputeHash(plaintextBytes); string hashValue = BitConverter.ToString(hashValueBytes).Replace(-, ); Console.WriteLine(hashValue); } HashAlgorithm.Create 的参数指明了要使用哪种散列算法,不区分大小写。BitConverter 将二进制用十六进制字符串表示,删除掉横线间隔便于与其他散列算法的结果兼容。 上述两种方法,输出的散列值都是用大写的十六进制字符串表示的二进制,其他语言中有的是小写字符,所以在与其他语言进行交互时,要注意大小写。 加密算法 对称加密 对称加密只有一套密钥,加密和解密均使用该密钥,该密钥决定了密文的安全与否,所以一定要保存好该密钥。对称加密的特点是速度快,能对大容量数据进入加密解密。 本文介绍的 TripleDES 是对 DES 的加强,使用的类是TripleDESCryptoServiceProvider,其命名空间是 System.Security.Cryptography。 using (TripleDESCryptoServiceProvider tripleDES = new TripleDESCryptoServiceProvider()) { using (ICryptoTransform transform = tripleDES.CreateEncryptor()) { string plaintext = 明文; byte[] plaintextBytes = Encoding.UTF8.GetBytes(plaintext); byte[] ciphertextBytes = transform.TransformFinalBlock(plaintextBytes, 0, plaintextBytes.Length); string ciphertext = Convert.ToBase64String(ciphertextBytes); Console.WriteLine(ciphertext); } } 我们可以看到加密后的 byte 数组,和散列算法不同,这次是通过转换为 Bas

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档