按分类归档:密码学

C#之MD5方法编写!

虽然微软的MSDN已经贴出了部分有关MD5的成员、方法、接口等等,但是在此我还是贴出MD5的整个方法吧! 第一个是输入原文字符串,输出经过编码的MD5值,第二个是输入原文字符串,输出字节型MD5值。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Security.Cryptography;

, , , 发表评论

密码学:非对称算法RSA及数字签名

RSA公钥加密算法是1977年由Ron Rivest、Adi Shamirh和LenAdleman在(美国麻省理工学院)开发的。RSA取名来自开发他们三者的名字。RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。 RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。它是被研究得最广泛的公钥算法,从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。RSA的安全性依赖于大数的因子分解,但并没有从理论上证明破译RSA的难度与大数分解难度等价。

, , , 1 comment

密码学:对称算法IDEA(国际数据加密算法)

IDEA即国际数据加密算法,它的原型是PES。对PES改进后的算法称为IPES,于1992年改名称为IDEA。 IDEA是一个分组长度为64位的分组密码算法,密钥长度为128位,同一个算法既可用于加密,也可用于解密。 IDEA的加密过程包括两部分: ① 输入的64位明文组分成四个16位子分组:X1,X2,X3,X4。四个子分组为算法第一轮的输入,总共进行八轮的迭代运算,产生64位的密文输出。 ② 输入的128位会话密钥产生八轮迭代所需的52个子密钥(八轮运算中每轮需要六个,还有四个用于输出变换)。

, , , 发表评论

密码学:单向散列函数MD5(消息摘要算法第五版)

在很多情况下,我们需要鉴别和认证用户。比如,传统上用户登录计算机时,系统把用户输入的口令与以明文形式保存在计算机中的密码进行对比。这样的验证方式,对安全性构成了很大的威胁。对此,我们可以通过单向散列函数生成密码的单向散列值用于验证,因为单向散列的不可逆性,即使别人获得了这串散列值,也无法得知原始的口令。 单向散列函数是指将任意长度的消息M映射成一个固定长度的散列值h的函数:H=H(M) ,其中,h的长度为m。 散列函数要具有单向性,则必须满足如下特性: ①给定M,很容易计算h。 ②给定h,根据H(M)=h反推M很难。 ③给定M,要找到另一消息M1并满足H(M)=H(M1)很难。 MD5的全称是Message-Digest Algorithm 5(信息-摘要算法),在90年代初由MIT Laboratory for Computer Science和RSA Data Security Inc的Ronald L. Rivest开发出来,经MD2、MD3和MD4发展而来。它的作用是让大容量信息在用数字签名软件签署私人密匙前被”压缩”成一种保密的格式(就是把一个任意长度的字节串变换成一定长的大整数)。不管是MD2、MD4还是MD5,它们都需要获得一个随机长度的信息并产生一个128位的信息摘要。

, , 发表评论