.Net加密与解密——散列运算
来源:互联网 发布:中国网络域名分为几种 编辑:程序博客网 时间:2024/06/18 14:27
一,散列运算的特点
1,散列运算是不可逆的,可以将散列运算理解为单向的加密;
2,任何两个不相同的文件,哪怕只有一个字节的细微差别,得到的摘要都是完全不同的。这个特点的意义在于,可以用来判断消息是否被篡改,即解决完整性的问题。
3,无论原始消息的大小如何,运算得出的摘要的信息是固定长度,摘要的长度根据散列算法的不同而不同。
二,利用散列运算判断消息是否被篡改的流程
1,发送放对消息进行散列运算,得到消息摘要,发送消息和摘要,并说明获得摘要所使用的散列算法。
2,接收方获得消息和原始摘要,使用相同的散列算法对收到的消息进行散列运算,重新获得一个摘要。
3,对比原始摘要和本地摘要,如果两个相同,则认为消息没有被篡改,否则认为被篡改过了。
三,.Net中实现散列运算Demo
namespace 散列运算{ //普通散列运算类 public class HashAlgorithmType { public const string SHA1 = "SHA1"; public const string SHA256 = "SHA256"; public const string SHA384 = "SHA384"; public const string SHA512 = "SHA512"; public const string MD5 = "MD5"; } class Program { static void Main(string[] args) { string plainText = "hello,world"; //初始化对象 HashAlgorithm alg = HashAlgorithm.Create(HashAlgorithmType.SHA1); //SHA1Managed ALG = new SHA1Managed(); // KeyedHashAlgorithm ALG = new HMACSHA1(Encoding.Default.GetBytes("secret key data"));//密钥散列运算,多一个密钥参数 //将字符串转换为字节数组 byte[] plainData = Encoding.Default.GetBytes(plainText); //获得摘要 byte[] hashData = alg.ComputeHash(plainData);//此处参数为字节数组或者流 //输出结果 foreach (byte b in hashData) { Console.Write("{0:x2}", b); } } }}
四,分析散列运算的安全隐患
如果在发送消息的过程中,信息被第三方截获,得到原始消息和消息摘要,此时,更改原始消息,并重新计算消息摘要并发送,接收方就不会发现消息是被篡改过的。并且,在发送消息的过程中,信息是未被加密的,第三方可以看到消息内容,不具备保密性。
0 0
- .Net加密与解密——散列运算
- .Net加密与解密——对称加密
- .Net加密与解密——非对称加密之加密模式
- java加密与解密的艺术(四)——散列函数(哈希函数)
- 关于.Net加密与解密
- .Net加密与解密——非对称加密之数字签名
- 使用openssl命令进行加密解密及散列运算的命令行
- .NET中的加密与解密技术
- .net中RSA的加密与解密
- JAVA与.NET DES加密解密
- .net中RSA的加密与解密
- vb.net DES加密与解密
- .NET加密方式解析--散列加密
- .NET加密方式解析--散列加密
- 黑马学习笔记——Asp.Net加密解密类
- DES加密解密——论java和.net
- 《ASP.NET本质论》 ASP.NET中的加密与解密
- .net字符串加密解密
- 文章标题
- 自定义Loader 和 Handler传递参数给UI线程
- 错误代码: 1449 The user specified as a definer ('root'@'%') does not exist
- 单词计数
- JAVA程序设计基础教程 类与对象
- .Net加密与解密——散列运算
- jz2440烧写方法笔记
- 交叉编译Qt应用程序,出现moc: Too many input files specified的问题
- 数据去重
- overflow:hidden这个属性的作用是隐藏溢出
- 操作系统的疑问:操作系统为什么能屏蔽硬件???
- JAVA设计模式(17):行为型-模板方法模式(Template Method)
- 人脸识别主要算法简介
- 黑马程序员---Java编写猜数字小游戏程序