sha512破解,Sha1破解

hacker|
68

如何面对最强算法MD5被破译

一、MD5是何方神圣?

所谓MD5,即"Message-Digest Algorithm 5(信息-摘要算法)",它由MD2、MD3、MD4发展而来的一种单向函数算法(也就是HASH算法),它是国际著名的公钥加密算法标准RSA的第一设计者R.Rivest于上个世纪90年代初开发出来的。MD5的最大作用在于,将不同格式的大容量文件信息在用数字签名软件来签署私人密钥前"压缩"成一种保密的格式,关键之处在于——这种"压缩"是不可逆的。

为了让读者朋友对MD5的应用有个直观的认识,笔者以一个比方和一个实例来简要描述一下其工作过程:

大家都知道,地球上任何人都有自己独一无二的指纹,这常常成为公安机关鉴别罪犯身份最值得信赖的方法;与之类似,MD5就可以为任何文件(不管其大小、格式、数量)产生一个同样独一无二的"数字指纹",如果任何人对文件做了任何改动,其MD5值也就是对应的"数字指纹"都会发生变化。

我们常常在某些软件下载站点的某软件信息中看到其MD5值,它的作用就在于我们可以在下载该软件后,对下载回来的文件用专门的软件(如Windows MD5 Check等)做一次MD5校验,以确保我们获得的文件与该站点提供的文件为同一文件。利用MD5算法来进行文件校验的方案被大量应用到软件下载站、论坛数据库、系统文件安全等方面。 笔者上面提到的例子只是MD5的一个基本应用,实际上MD5还被用于加密解密技术上,如Unix、各类BSD系统登录密码(在MD5诞生前采用的是DES加密算法,后因MD5安全性更高,DES被淘汰)、通信信息加密(如大家熟悉的即时通信软件MyIM)、数字签名等诸多方面。

二、MD5的消亡之路

实际上,从MD5诞生之日起,来自美国名为Van Oorschot和Wiener的两位密码学专家就发现了一个暴力搜寻冲突的函数,并预算出"使用一个专门用来搜索MD5冲突的机器可以平均每24天就找到一个冲突"。不过由于该方案仅仅从理论上证明了MD5的不安全性,且实现的代价及其夸张(当时要制造这种专门的计算机,成本需要100万美元),于是MD5自其诞生十多年来一直未有新版本或者被其它算法彻底取代。

在接下来的日子里,有关MD5的破译又诞生了"野蛮攻击",也就是用"穷举法"从所有可能产生的结果中找到被MD5加密的原始明文,不过由于MD5采用128位加密方法,即使一台机器每秒尝试10亿条明文,那么要破译出原始明文大概需要10的22次方年,而一款名为"MD5爆破工具"的软件,每秒进行的运算仅仅为2万次!

经过无数MD5算法研究专家的努力,先后又诞生了"生日攻击"、"微分攻击"等多种破译方法(相关信息大家可以参考研究成果,大大推进了md5算法消亡的进程。尽管在研究报告中并没有提及具体的实现方法,我们可以认为,md5被彻底攻破已经扫除了技术上的障碍,剩下的仅仅是时间和精力上的问题。/" target=_blank)。此次山东大学几位教授的最新研究成果,大大推进了MD5算法消亡的进程。尽管在研究报告中并没有提及具体的实现方法,我们可以认为,MD5被彻底攻破已经扫除了技术上的障碍,剩下的仅仅是时间和精力上的问题。

三、MD5完蛋了,放在银行的存款还安全吗?

由于MD5应用极其广泛,即使是在银行数字签名证书中,它依然占据着比较重要的地位,此次MD5被成ζ埔氲男挛湃貌簧俨幻魉缘娜烁械?恐惧",认为这是对整个密码界的彻底颠覆,甚至有人开始担心"自己放在银行或者网络银行账户中的存款也有被盗取的可能"。

其实这种忧虑完全是杞人忧天,以目前主流的网络银行的加密技术为例,它们都构建于PKI(Pubic Key Infrastructure,公钥加密技术)平台之上,与公钥成对的私钥只掌握在与之通信的另一方,这一"信任关系"是通过公钥证书来实现的。PKI的整个安全体系由加密、数字签名、数据完整性机制等技术来共同保障,其密码算法包括对称密码算法(如DES、3DES)、公开密钥密码算法(如ECC、RSA),即使在同样有应用的HASH算法方面,目前网络银行所采用的大多是SHA-1算法,该算法与MD5的128位加密相比,使用了160位加密方式,比MD5安全性高不少。

其实,就目前网络银行的安全隐患来看,更多的是来自客户接入端(如Web入口),而非银行的加密技术本身。

四、MD5的继承者们

"天下没有不透风的墙",实际上任何一种算法都会有其漏洞,即使是目前大行其道的MD5和SHA-1,当对漏洞的研究发展到其能够被有效利用时,则标志着该算法灭亡的时候到了。所谓"天下无不散之筵席",MD5逐渐退出历史舞台后,下一个接任者又会是谁呢?

实际上,长期以来,密码界一直在致力于对新加密算法的研究,而且在高度机密的安全领域,所采用的加密算法也绝非MD5,各国政府、各大公司都在研究拥有独立技术的加密算法,其中比较出色的代表有SHA-1、SHA-224等。此次MD5破译报告发表后,美国国家技术与标准局(NIST)表示,鉴于MD5被破译以及SHA-1漏洞被发现,他们将逐渐放弃目前使用的SHA-1,于2010年前逐步推广更安全的SHA-224、SHA-256、SHA-384和SHA-512。这些算法与MD5的128位加密相比,加密位数和安全性能都提高了很多倍。

尽管MD5被淘汰已经成为必然,不过鉴于它开源以及免费的特性,而且目前还没有真正有效的快速破解方法,因此它还将继续在历史舞台活跃一段时间。

哈希加密算法

MD5即Message-Digest Algorithm 5(信息摘要算法5),是计算机广泛使用的散列算法之一。经MD2、MD3和MD4发展而来,诞生于20世纪90年代初。用于确保信息传输完整一致。虽然已被破解,但仍然具有较好的安全性,加之可以免费使用,所以仍广泛运用于数字签名、文件完整性验证以及口令加密等领域。

算法原理:

散列算法得到的结果位数是有限的,比如MD5算法计算出的结果字长为128位,意味着只要我们穷举2^128次,就肯定能得到一组碰撞,下面让我们来看看一个真实的碰撞案例。我们之所以说MD5过时,是因为它在某些时候已经很难表现出散列算法的某些优势——比如在应对文件的微小修改时,散列算法得到的指纹结果应当有显著的不同,而下面的程序说明了MD5并不能实现这一点。

而诸如此类的碰撞案例还有很多,上面只是原始文件相对较小的一个例子。事实上现在我们用智能手机只要数秒就能找到MD5的一个碰撞案例,因此,MD5在数年前就已经不被推荐作为应用中的散列算法方案,取代它的是SHA家族算法,也就是安全散列算法(Secure Hash Algorithm,缩写为SHA)。

SHA实际包括有一系列算法,分别是SHA-1、SHA-224、SHA-256、SHA-384以及SHA-512。而我们所说的SHA2实际是对后面4中的统称。各种SHA算法的数据比较如下表,其中的长度单位均为位:

MD5和SHA1,它们都有4个逻辑函数,而在SHA2的一系列算法中都采用了6个逻辑函数。

以SHA-1为例,算法包括有如下的处理过程:

和MD5处理输入方式相同

经过添加位数处理的明文,其长度正好为512位的整数倍,然后按512位的长度进行分组,可以得到一定数量的明文分组,我们用Y 0 ,Y 1 ,……Y N-1 表示这些明文分组。对于每一个明文分组,都要重复反复的处理,这些与MD5都是相同的。

而对于每个512位的明文分组,SHA1将其再分成16份更小的明文分组,称为子明文分组,每个子明文分组为32位,我们且使用M[t](t= 0, 1,……15)来表示这16个子明文分组。然后需要将这16个子明文分组扩充到80个子明文分组,我们将其记为W[t](t= 0, 1,……79),扩充的具体方法是:当0≤t≤15时,Wt = Mt;当16≤t≤79时,Wt = ( W t-3 ⊕ W t-8 ⊕ W t-14 ⊕ W t-16 ) 1,从而得到80个子明文分组。

所谓初始化缓存就是为链接变量赋初值。前面我们实现MD5算法时,说过由于摘要是128位,以32位为计算单位,所以需要4个链接变量。同样SHA-1采用160位的信息摘要,也以32位为计算长度,就需要5个链接变量。我们记为A、B、C、D、E。其初始赋值分别为:A = 0x67452301、B = 0xEFCDAB89、C = 0x98BADCFE、D = 0x10325476、E = 0xC3D2E1F0。

如果我们对比前面说过的MD5算法就会发现,前4个链接变量的初始值是一样的,因为它们本来就是同源的。

经过前面的准备,接下来就是计算信息摘要了。SHA1有4轮运算,每一轮包括20个步骤,一共80步,最终产生160位的信息摘要,这160位的摘要存放在5个32位的链接变量中。

在SHA1的4论运算中,虽然进行的就具体操作函数不同,但逻辑过程却是一致的。首先,定义5个变量,假设为H0、H1、H2、H3、H4,对其分别进行如下操作:

(A)、将A左移5为与 函数的结果求和,再与对应的子明文分组、E以及计算常数求和后的结果赋予H0。

(B)、将A的值赋予H1。

(C)、将B左移30位,并赋予H2。

(D)、将C的值赋予H3。

(E)、将D的值赋予H4。

(F)、最后将H0、H1、H2、H3、H4的值分别赋予A、B、C、D

这一过程表示如下:

而在4轮80步的计算中使用到的函数和固定常数如下表所示:

经过4轮80步计算后得到的结果,再与各链接变量的初始值求和,就得到了我们最终的信息摘要。而对于有多个明文分组的,则将前面所得到的结果作为初始值进行下一明文分组的计算,最终计算全部的明文分组就得到了最终的结果。

sha-512可以解密吗?

算法输出散列值长度 (bits)中继散列值长度 (bits)数据区块长度 (bits)最大输入信息长度 (bits)一个Word长度 (bits)循环次数使用到的运算符碰撞攻击

SHA-0 160 160 512 264 − 1 32 80 +,and,or,xor,rotl 是

SHA-1 160 160 512 264 − 1 32 80 +,and,or,xor,rotl 存在

9223372036854775808 的攻击

SHA-256/224 256/224 256 512 264 − 1 32 64 +,and,or,xor,shr,rotr 尚未出现

SHA-512/384 512/384 512 1024 2128 − 1 64 80 +,and,or,xor,shr,rotr 尚未出现

from wikipedia

sha512能快速破解前一位吗

不懂你的意思

这是一串密码还是一个暗语

我个人的理解是:sha可能是名字的缩写,比如说是莎莎,或者是姓莎,或者是名字中带有莎的,比如莎莎

而512感觉就比较多了,可能是谐音521的反过来,也就是我爱你,或者是什么特别的日子,比如说是纪念日,初见日,约会日等等

所以从我个人的角度来说,我觉得可能是喜欢你的意思

最简人机交互-加解密

上学时递小纸条,尤其是需要中间人传递时,是不是使用过一套约定的符号代替普通的文字?特别有必要!

广义来讲,保护信息的各种方式都属于加密范畴,而保护的形式、角度、等级和目标是多种多样的。

电视剧里,经常有材料被情敌偷偷修改然后蒙冤的场景。何解?

策略:让内容中每一个字节都参与一项运算得出一个结果记录下来,如果计算结果变了,说明内容被修改过。

这里运算得出的结果叫做摘要,这个算法叫消息摘要算法,也叫单向散列函数。算法的科学性很重要,常见的算法有:MD5、SHA1、SHA256、SHA512、HmacMD5、HmacSHA1、HmacSHA256 等。

这个,只能说难免会被别人看到。

策略:使用密钥变换内容,让别人看到也不知道为何物,通过密钥才可还原内容。

这种通过相同的密钥来加密和解密的算法,叫对称加密算法。常见算法DES、3DES(TripleDES)和AES(Advanced Encryption Standard)等。AES 根据密钥长度不同又分为AES-128 AES-192 AES-256 对应16 24 32 字节。

这些算法,通常是按块来进行加密的,如 16 个字节为一块。当最后一块不够 16 个字节时,通常是采用补齐的策略,补齐的方式也有不同讲究。

策略一,数据长度不对齐时使用0填充,否则不填充,但补的0解密后无法区分是补的还是原本就有的,只适合以\0结尾的字符串加密,此谓之 ZeroPadding。

策略二,补充的字节值设定为补充的数量,如要补充5个字节,则这5个字节的值都为 5,这样根据最后一个字节可得到填充数据的长度,在解密后可以准确删除填充的数据。但如果刚好整块无需补充,为了仍然满足最后一个字节表示填充的数据长度,填充一整块,值为块长度。此种方式有 PKCS7Padding,它假设数据长度需要填充n(n0)个字节才对齐,那么填充n个字节,每个字节都是n;如果数据本身就已经对齐了,则填充一块长度为块大小的数据,每个字节都是块大小。PKCS5Padding,PKCS7Padding的子集,块大小固定为8字节。

分块加密时,每块采用完成相同的加密过程,则可以并行加密再拼接,但当内容中有多块相同的内容时加密结果会一样,而这种重复会为破解提供线索,于是多种加密模式被提出。以下是两种最常见的模式。

Electronic Code Book(ECB)

电子密码本模式

最基本的加密模式,也就是通常理解的加密,相同的明文将永远加密成相同的密文,无初始向量,容易受到密码本重放攻击,一般情况下很少用。

Cipher Block Chaining(CBC)

密码分组链接模式

明文被加密前要与前面的密文进行异或运算后再加密,因此只要选择不同的初始向量,相同的密文加密后会形成不同的密文,这是目前应用最广泛的模式。CBC加密后的密文是上下文相关的,但明文的错误不会传递到后续分组,但如果一个分组丢失,后面的分组将全部作废(同步错误)。

对称加密中,接收方需要知道密钥,这个密钥本身的保密就成为了问题。密钥泄漏,意味着正确解密的消息也变得不可靠,也许是伪造的。

策略:公开密钥,即发给我的消息,使用公开密钥加密,我收到之后只可用我的私有密钥解密。

此谓之非对称加密算法,一种强大的密钥保密方法。这离不开理论上的研究成果。

非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。

为了验证是不是对的人,可以要求发送放对内容提取摘要,并使用其私钥加密,将结果附在后边作为签名一并发送。这样,就可以使用发送放的公钥来解密这个签名并验证其一致性,如果一致说明是对的人发过来的。此过程谓之签名验签。

使用最广泛的是RSA算法。

很多常见的加密算法在 CryptoJS 中有实现,首先,在控制台引入扩展脚本。

加密结果 U2FsdGVkX1/Ry7m4YU7aTXizLMAGhn2EwZf555rz8neh6FP6/4p9CUaZpnBxvOKT

解密过程

加密的内容为16进制数据时,可以利用以下方式将16进制字符串转换成字节数组。

计算结果 c6a13b37878f5b826f4f8162a1c8d879

CryptoJS 当前尚未支持 RSA,可以引入以下 JS 扩展。

使用公钥加密

OVNmfqDMAxHoiMbNHNQ4Olrb0BHGLHEPXM0EAJ/hTwEJsz+igrLIPnrqf1ABmWnoj6cOOcGNroYLa2xZ9/TkaF5UKG+H+RrjpbHHQVe3mWWlDsX9bZ/m8lP3izntwKHdklH+2vfeOlSJ3+PK3O6ILWvaVM4PVCzVo9lPiN7NkIE=

使用私钥解密

反过来使用私钥加密公钥解密也是可以的,只是一般的工具方法,只会提供私密生成签名,公钥验证签名,但这足够了。

更详细用法,请参考

直接来看看二战期间的故事,以下内容引用自

2条大神的评论

  • avatar
    访客 2022-09-29 上午 06:43:30

    4发展而来的一种单向函数算法(也就是HASH算法),它是国际著名的公钥加密算法标准RSA的第一设计者R.Rivest于上个世纪90年代初开发出来的。MD5的最大作用在

  • avatar
    访客 2022-09-29 下午 03:25:51

    384和SHA-512。这些算法与MD5的128位加密相比,加密位数和安全性能都提高了很多倍。 尽管MD5被淘汰已经成为必然,不过鉴于它开源以及免费的特性,而且目前还没有真正有效的快速破解方法,因此它还将继续在历史舞台活跃一段时间。哈希加密算法 MD5即Message-Digest A

发表评论