首页 > 试题

ca939

更新时间:2022-11-16 04:20:27 阅读: 评论:0

九年级辅导书推荐-为怎么组词


2022年11月16日发(作者:司法局长)

MD5是什么?及其它的特点

⽐较官⽅的解释⼤家可以百度,这⾥我说⼀下⾃⼰的理解。

⼀.作⽤:⼀般⽤于互联⽹⼀种数据的唯⼀性标识。

⼆.实体:本⾝是⼀个128位的0/1⽐特。⼀般被表⽰为16进制的字符串。4个⽐特位组成⼀个16进制字符,因此常常能见到的是

(128/4=)32个16进制字符组成的字符串4951dd1cbff8cbbe4cd4475ca939fc8b,当然它实质是⼀种消息摘要算法

三.特点:

1.完全相同的⼀段数据,不论时间地点(加密算法相同的条件)加密出的32位的字符串完全相同。

2.加密过程本⾝就是⼀个有损的加密过程。因此⼏乎不能还原出原始数据。安全

补充:⼀般还原出原始数据都是使⽤碰撞的⽅式来还原。意思⼤概和穷举的意思⼀样,有⾜够多的原始数据量,世界上的所有数据⽤

1~n来表⽰,把1~n都⽤MD5计算⼀遍得1x~nx(x表⽰计算后得的数)。把1~n当成键值对的键,把1x~nx放⼊键值对的值,当得到

⼀个MD5字符串,通过值去找键,就知道是什么数据了。因为你本来就拥有数据,因此才能找到数据。但当你没有原始数据时,想通

过128⽐特的玩意去恢复⼤于128⽐特的数据本⾝就是玩笑,数据量都不⼀样,⾄于原理有兴趣的朋友可以研究研究信息论。不想研

究的可以回想回想之前学的⾹农公式。再从这⼀点去研究。⼜有⼤的世界。

3.散列能⼒巨强。安全

MD5⼯具类代码:

;

putStream;

ption;

eDigest;

publicclassMD5Utils{

publicstaticStringgetStringMD5(Stringstr){

try{

MessageDigestdigest=tance("MD5");

returnnewString(encode((es())));

}catch(Exceptione){

thrownewRuntimeException("md5digestfail:",e);

}

}

publicstaticStringgetFileMD5(Filefile){

FileInputStreamin=null;

try{

MessageDigestdigest=tance("MD5");

if(!()){

thrownewRuntimeException("md5digestfail:filenotexists!");

}

bytebuffer[]=newbyte[1024];

intlen;

in=newFileInputStream(file);

while((len=(buffer,0,1024))!=-1){

(buffer,0,len);

}

returnnewString(encode(()));

}catch(Exceptione){

thrownewRuntimeException("md5digestfail:",e);

}finally{

if(in!=null){

try{

();

}catch(IOExceptione){

}

}

}

}

privatestaticfinalchar[]HEX={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};

publicstaticchar[]encode(byte[]bytes){

finalintnBytes=;

char[]result=newchar[2*nBytes];

intj=0;

for(inti=0;i

//Charfortop4bits

result[j++]=HEX[(0xF0&bytes[i])>>>4];

//Bottom4

result[j++]=HEX[(0x0F&bytes[i])];

}

returnresult;

}

}

当以上代码加密⽂件时。即使⽂件名不同,只要⽂件内容相同,加密出的MD5完全⼀致:

测试:

加密⼀个图⽚:

;

5Utils;

publicclassMD5Test{

publicstaticvoidmain(String[]args){

//MD5第⼀次运算4951dd1cbff8cbbe4cd4475ca939fc8b

n(

eMD5(

newFile("C:")

)

);

//MD5第⼆次运算

n(

eMD5(

newFile("C:")

)

);

//MD5第三次运算

n(

eMD5(

newFile("C:UrsanxiaopeiDesktopindex⽂件名真的不同!.jpg")

)

);

//MD5第四次运算

n(

eMD5(

newFile("C:UrsanxiaopeiDesktopindex⽂件名真的不同!.jpg")

)

);

//1的MD5数为

n(

ingMD5(

"1"

)

);

}

}

结果:

对字符串1的加密,⼤家使⽤我的代码在你的机器上做了MD5运算后⼀定也能得到c4ca4238a0b923820dcc509a6f75849b

第⼀次与第⼆次加密证明了,对相同的⽂件不同的时间加密的出相同的MD5

第三四次加密与前两次相同证明在,⽂件的副本,哪怕⽂件名不⼀样,只要⽂件内容相同,加密的MD5也是相同的。

现在我们来做⼀个有趣的事。

把图⽚以记事本打开更改其中⼀个字符。再次加密图⽚(改了⼀个字符,图⽚也会打不开,不要使⽤重要图⽚做测试),这次我们更改⽂

件的副本⾥的⼀个字符。删掉添加更改都可以,随意。这次我就只改⼀个字符,把最后⼀个字符“?”删掉。

删掉“?”后我的副本都不能预览了。

⽤MD5运算后,可以看到第⼆⾏与第三⾏结果完全不⼀样,证明了它散列的能⼒。巨强!可以说百分之零点⼏的的差别也会导致MD5完全

不⼀样。因此再不考虑碰撞的可能性下,只要两个数据的MD5相同,那我们可以认为这两个数据完全相同。

说了这么多知道了它唯⼀标识的能⼒很强。

既然他的唯⼀标识能⼒这么强。

那有个使⽤场景就是,⽤来作为⽂件的唯⼀标识。⽐如⽂件上传时,哪怕你的⽂件名不⼀样,经过MD5⼀下,服务器对⽐⼀下存在服务器

的⽂件的MD5码表。就知道你上传的这个⽂件是否服务器已经存在,qq的秒传也是使⽤这个⽅法(我猜的)发现服务器有这个⽂件后,直

接把服务器那个⽂件传给你要传的⼈。如果你是上传⽂件给服务器,那你也得到⼀个访问服务器那个⽂件的权限。因为服务器知道你上传的

⽂件就是服务器存着的那个⽂件,这就是秒传的精髓。当然具体实现消息摘要算法的⽅式也许会不⼀样。也许是md其他什么的。

本文发布于:2022-11-16 04:20:27,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/88/28805.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:负压病房
下一篇:1mm等于多少um
标签:ca939
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图