首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

MD5算是加密算法吗?解决方案

2011-12-28 
MD5算是加密算法吗?最近看到很多文章、书籍,都在说加密算法时,把MD5列入加密算法,或称自己在使用MD5进行数

MD5算是加密算法吗?
最近看到很多文章、书籍,都在说加密算法时,把MD5列入加密算法,或称自己在使用MD5进行数据加密(比较普遍)。

但是根据在下的孤陋寡闻,MD5   好像是一种散列算法。

根据解释,一般来说:
MD5哈希函数将任意长度的二进制字符串映射为固定长度的小型二进制字符串。加密哈希函数有这样一个属性:在计算上不大可能找到散列为相同的值的两个不同的输入;也就是说,两组数据的哈希值仅在对应的数据也匹配时才会匹配。数据的少量更改会在哈希值中产生不可预知的大量更改。

当前普遍MD5   算法的哈希值大小为   128   位。

我个人认为,加密算法因该是指那些可以将明文通过一定算法后得到密文,并且可以通过相对应的解密算法和密钥,计算出原来的明文。MD5算法好像不符合这个模式。

不知道大家是怎么认为的,非常想听一下大家的意见。

[解决办法]
MD5不是加密算法,是散列算法,或者叫做哈西算法。

加密算法一般指对称加密算法。


最近看到很多文章、书籍,都在说加密算法时,把MD5列入加密算法,或称自己在使用MD5进行数据加密(比较普遍)。

完全可以忽略那些文章,如果是书籍,请默哀……
[解决办法]
MD5的作用是对一段信息(message)生成信息摘要(message-digest),该摘要对该信息具有
唯一性,可以作为数字签名。用于验证文件的有效性(是否有丢失或损坏的数据),对用户
密码的加密,在哈希函数中计算散列值。
[解决办法]
不是加密算法
[解决办法]
我个人认为,加密算法因该是指那些可以将明文通过一定算法后得到密文,并且可以通过相对应的解密算法和密钥,计算出原来的明文。MD5算法好像不符合这个模式。
================
以上是你的“个人认为”^^
以下是我的“个人认为”:
加密可以是对称加密(如des,tripledes),非对称加密即公钥加密(如rsa),
单向加密(如md5)..
[解决办法]
是加密算法 类型上属于哈洗算法
[解决办法]
散列算法和加密算法不是一个级别的东西,无可比性

汗,这样说吧:“MD5算法可以运用到数据加密中”。

如果你愿意你也可以冒泡排序算法来做加密-_-!!!

//from 維基百科
算法的定义:
算法是指完成一个任务所需要的具体步骤和方法。也就是说给定初始状态或输入数据,经过计算机程序的有限次运算,能够得出所要求或期望的终止状态或输出数据。

算法的特征:
1 输入:一个算法必须有零个或多个输入量。
2 输出:一个算法应有一个或多个输出量,输出量是算法计算的结果。
3 确定性:算法的描述必须无歧义,以保证算法的执行结果是确定的。
4 有限性:算法必须在有限步骤内实现。注:此处“有限”不同于数学概念的“有限”,天文数字般的有限对于实际问题并无意义。
5 有效性:又称可行性。能够实现,算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现。

[解决办法]
md5是比较低级的加密算法,你可以看看动网论坛,里面的加密就是使用的md5
[解决办法]
是校验算法,不可恢复
[解决办法]
MD5不是加密算法,是散列算法,但可用于加密用途,如此而已...
[解决办法]
MD5是一种单向散列函数,单向散列函数的作用是将任何长度的一段数据散列成固定长度。常用于生成消息认证码等等,可以与非对称算法一起用于数字签名。 想具体了解可以参看 《应用密码学》
[解决办法]
如果非说MD5是“加密算法”的话
那MD5也是属于“不可逆加密算法”
即只能用于校验,不能对“加密”后的信息进行还原,因此常被用来在数据库中保存密码,这样即使数据库中的“密码”被盗取,也无法得知原文是什么
[解决办法]
真没想到这里竟然会有两颗星的人,竟然如此的领悟加密的概念,如此的素质。悲哀!

还有其它一些人认为MD5不是加密算法,痛!

MD5完全属于加密算法,算法(function函数)分成可逆和不可逆。MD5属于不可逆算法,从数学的角度来讲,这种散列函数不存在反函数,不存在对应的解密算法而已。
MD5主要应用在密码加密,数字签名验证,要求检查内容完整性的领域。
unix/linux操作系统对用户登陆密码的加密就是一个应用,把密文存在一个文件中即可。只有这样的加密,就算别人拿到密文,他也破解不了,得不到明文,这才达到安全的效果。
我们在往数据库中保存密码信息或其它一些重要的信息时都可以采用这种单向加密算法,密码比较也只是密文比较,非明文比较,外人永远不会知道明文是什么。
[解决办法]
散列是为了什么? 研究算法 不是研究文字
[解决办法]
当然算,MD5 是不可逆加密
难道白马就不是马了?
[解决办法]
支持楼上的,MD5不可逆的,(但是好象目前有方法逆了),但是也应该算是加密吧
一次性钥匙和万能钥匙 都是钥匙
[解决办法]
To 伴水清清

MD5(MD5(X + MD5(X + MD5(MD5(MD5(MD5(MD5(MD5(X)))))))) + X + "Zswang 路过 ") xor X;


怎么解密?

MD5是单向的,明白这个就可以了,至于是不是加密只是称呼问题。
[解决办法]
MD5 是一个哈西函数,也叫做散列函数,不是加密算法.
加密算法分为对称加密算法和非对称加密算法。
对称加密算法有DES,AES等等。
非对称加密算法有:RSA、ElGamal及其变种的加密算法。
目前来说,DES早已经被美国商业标准所拼弃,因为他的有效密文长度是56位,取而代之的是AES。
美国对进口中国的加密设备中的密码系统都做过手脚(比如早些时候出口给中国的DES加密设备,其有效密文长度不会超过30位)
而非对称加密算法的基础是基于几个数学难题的(例如大整数分解问题,Differ-Hellman问题、双线形对下的l-BDHE问题等等)
[解决办法]
不知道说啥好。反正什么都是加密算法,只要这数据进去了,变成一堆东西出来那就是加密了。
其实这个。。。太难区分了。按照你们说的,那压缩算法也是加密算法。
我决定代表全世界人民下个结论,应用到安全机制上的算法都TMD是加密算法
[解决办法]
MD5--Message Digest(消息摘要)技术,是一种散列算法,把数据(一个字符串,也可以是一个文件)生成固定长度的字符串,用于校验数据和文件的完整性,因为同个文件或字符串MD5计算后得到的值是一样的.不应该称为加密算法.
[解决办法]
我的个人理解是:
1、加密算法是能把 某样东西(程序、文件、字符等)转换成另外一种纪录的方法来保存这些东西
2、被加密的,能还原为加密前的状态,也就是能被解密

MD5没有这个功能,不能逆算,如果能的话。。。就是目前世界上最牛的压缩软件了
能把所有东西都加密(压缩)了128个字符- -||
[解决办法]
看来很多人对Hash算法还不是很理解。在这里,我简单的讲解一下。
我也不在希望以后再有人问关于MD5,SHA1如何解密了!

首先简单的讲一下Hash算法和他的通途!可能大家看了以后,很多人可能都会发现自己
目前在使用Hash算法的目的都是和Hash算法本身的设计目的不一样的 :D

Hash算法不管是MD5也好SHA1也好. 他们都是一种散列算法,其算法的特点是,可以把任意长度的字符串经过运算生成固定长度的字符串,并且这个产生的字符串代表着原来字符串里的所有字符。
简单的举个例子,就拿我上面说的那个帖子里面的 kc_ren(天堂龙)的例子:

admin 加密后:
16位8f00b204e9800998
32位d41d8cd98f00b204e9800998ecf8427e

其中不管是16位也好,32位也好其生成的字符串8f00b204e9800998 (16bit)或者d41d8cd98f00b204e9800998ecf8427e(32bit)他们表示着admin这个原始字符串.

只要admin这个字符串没有变,不管怎样重复使用MD5或者SHA1进行重新运算,其结果保持不变。

利用这个特点,在计算机安全学上,我们使用这种算法来保证数据完整性(Integrity)
这里提到计算机安全学,我在这里扩充一下:简单的概述计算机安全学,其实就是一门在讲关于 CIA
的学科。 C = Confidentiality (机密性), I = Integrity (完整性), A = Avalibility(可用性)

显而易见Hash算法,是用来保证 Integrity的算法。什么叫做完整性,不单单指数据不丢失,并且要保证数据没有被非法修改过。举个简单的例子。

比如:A 发了一个Email给B内容为 "Hello ",因为我们目前使用的以太网的特点,任何人在网络上都有可能截获这封Email,任何人都有可能,修改Hello这个字符串。那么当B收到这封A发来的Email的时候,怎么确定这封Email在传送过程中没有被修改过呢? 我们就使用了Hash算法来保证数据的完整性。他的工作方式是这样的:

1.A写一封Email内容为Hello
2.A用Hash算法对Hello进行编码(这里我用了编码,没有用加密这个词)
3.A将原始Email Hello 以及经过Hash算法编码过后的digest(原始Email的摘要信息)一起发送给B
(因此,A给B发的Email由2部分组成,1是原始的Hello,2是经过Hash编码的摘要信息)

4.B接收到了A的Email,首先分离由2部分组成的邮件。
5.B通过Hash算法,根据收到的Email的内容,重新计算出该Email的摘要信息.
6.B将自己计算出的摘要信息和收到的摘要信息进行比较,如果比较结果一样,则认为这封Email在中途没有被修改过,否则的话,这封Email在中途一定被修改过,因此内容不可信。

至此,保证了原始数据的完整性。
很多人在使用Hash算法在对密码进行所谓的加密,其实是不妥的。这样做的最终结果最多最多就是能够让使用的这个软件的人放心。放心什么呢?放心的就是他们在你的软件里面所保存的密码,开发软件的人不能获得。除此之外,没有其他任何价值。如果一定要说出其他的价值的话。也就是如果开发软件的人员或者维护该软件的人员不小心将含有客户密码数据的数据库泄密的话,得到这个数据库的人,无法从数据库中获得那些客户的密码。 但是,大家想想清楚,我都获得了数据库的数据,我还需要那些密码干什么呢?

我相信很多在CSDN的开发者,他们为了实现向客户承诺的所谓的 Pravicy,他们在开发Web base应用的时候,使用了Hash算法。这样他们会对使用他们Webbase的应用的用户说: "你们在我这里的登陆密码是安全的,没有人能够知道。 " 看上去好像想得很周到,其实,仔细想想,光光使用这种方法,如何保证用户的Pravicy呢? 说白了,就是形同虚设,光光使用Hash算法对用户的密码进行编码(所谓的加密)是没有什么很高的价值的。

谈了这么多,我相信大家应该理解Hash算法的用途了。现在我们来简单的谈一下,很多人很为之骄傲的山东大学王小云教授的关于什么MD5 "解密 "的新闻.(根据我刚刚看了山东大学的网页,据说她连SHA1,MD4都 "解密 "了). 请大家注意,我在解密上面放了引号!!

如果网上这么传,我只能说那些报道这则消息的新闻工作者的无知!(当然不能怪他们,因为他们不是计算机专业毕业的,而且报道的又是有关计算机安全学方面的东西。要知道在美国计算机安全学,是可以单独作为大学本科的一个专业的,里面有太多的东西需要学了。我现在讲得也只是皮毛而已。)

有点跑题了:P ......

回过头,简单的讲一下王教授的碰撞法。 说到解密?王教授的方法不是用来解密的。所以传什么王教授可以解密MD5,将MD5的编码(所谓的加密)结果还原,这个是有点夸大了。没有这么传神的,那些说法用句时髦的话来描述叫做“传说中的解密” :D


王教授的碰撞法是利用了MD5或者SHA1算法的一个漏洞(我暂且叫做漏洞吧,没有考证过)
根据MD5和SHA1这种Hash算法的特点,因为他们是任意长度的字符串变成固定长度的摘要信息。
那么这里就有可能发生一个问题,就是不同的字符串在理论上是有可能产生相同的摘要信息。

王教授所谓的碰撞法,碰撞的就是不同的字符串所产生的摘要信息是一样的那些字符串。因此得名碰撞法。 碰撞就是体现在这里。没有什么其它的传神的东西了。根据SHA1和MD5等Hash算法,在设计时候,设计这个算法的人认为不同的字符串要产生相同结果的摘要信息的可能性几乎为零。而王教授则证明了SHA1和MD5等Hash算法产生的摘要信息规则是可以在比较短时间内被破解的。这样一来,原始数据的 Integrity 就被打破了。 所谓的破解,也就是体现在这里。

如果大家还不明白,我再简单的用王教授的碰撞法给大家举个简单的例子。

还是拿我前面的例子,A给B写了个Email叫做Hello,然后通过王教授的碰撞法,可能得到Fuck这个字符串的摘要信息和Hello这个这个字符串产生的摘要信息是一样的。因此,在前面的这个例子中。如果B收到的Email内容为Fuck B也将认为是A发来的Email,并且没有被修改过!

看到这里,我相信很多目前在使用MD5或者SHA1等Hash算法的人来保证密码安全的人来说,应该考虑一下,是否应该继续使用目前的方法来保证安全了。

http://topic.csdn.net/t/20050608/21/4069250.html
[解决办法]
我认为:严格意义上来说,所谓加密算法一定对应解密;但MD5的主要功能是单向加密做数字签名等用途,所以我认为MD5是一种算法,但是叫做加密算法不合适

热点排行