- 4
- 0
- 约6.32千字
- 约 4页
- 2019-04-15 发布于天津
- 举报
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
您可能关注的文档
- 2019年A类班级能力提高阶段——学习策略教改报告.doc
- 2019年B.重点专项目标考核办法.doc
- 2019年B1包、财务软件.doc
- 2019年B2C电子商务中的信用风险分析及对策.doc
- 2019年B4包、医疗信息系统升级改造.doc
- 2019年B5包、山东省物联网产品质检中心实验室信息管理系统.doc
- 2019年BD-EIP综合管理平台功能清单.doc
- 2019年BEASCarShow——品车·品酒·品音乐1912时尚夜车展策.ppt
- 2019年BeautyIsMoney-生技产业在美容市场的商机-.ppt
- 2019年BeihangSoftwareCollege程建群博士(Dr.JasonCheng).ppt
- 吉州区水利局公开招聘公益性岗位工作人员备考题库附参考答案详解(综合题).docx
- 吉州区水利局公开招聘公益性岗位工作人员备考题库带答案详解(预热题).docx
- 吉州区水利局公开招聘公益性岗位工作人员备考题库带答案详解(精练).docx
- 吉州区水利局公开招聘公益性岗位工作人员备考题库附参考答案详解(b卷).docx
- 吉州区水利局公开招聘公益性岗位工作人员备考题库带答案详解(黄金题型).docx
- 吉州区水利局公开招聘公益性岗位工作人员备考题库精编答案详解.docx
- 吉州区水利局公开招聘公益性岗位工作人员备考题库带答案详解(夺分金卷).docx
- 吉州区水利局公开招聘公益性岗位工作人员备考题库带答案详解(基础题).docx
- 吉州区水利局公开招聘公益性岗位工作人员备考题库带答案详解(培优).docx
- 吉州区水利局公开招聘公益性岗位工作人员备考题库含答案详解(预热题).docx
最近下载
- 25个作业女性化教程.docx VIP
- 2025年九江职业大学单招职业适应性考试题库审定版.docx VIP
- 2025年九江职业大学单招职业适应性考试题库带答案详解(精练).docx VIP
- 2025年九江职业大学单招职业技能考试题库带答案.docx VIP
- 沙金矿合作合同10篇.docx VIP
- 2025年甘肃省公务员考试《申论》试题及答案解析(县乡卷.docx VIP
- PS-640U系列保护测控装置使用说明书_V4.00.pdf VIP
- 专题复习初中常见离子的检验.ppt
- 2025年人教版小学四年级(下)奥林匹克数学竞赛测试考试卷(附答案解析).docx
- 2025年专利代理师资格考试真题及答案.docx VIP
原创力文档

文档评论(0)