单向加密的一点思考(md5)
2017-05-05 10:35
218 查看
在百度网盘中上传文件的时候、我发现那上传的速度真是一个快。
快到让我吃惊之外、还多了一份好奇。使用百度上传文件的时候的用户体验是非常不错的
除了带宽的问题、这其中是不是还有些别的呢。在我学习到的知识当中我自然而然的想到
了单向加密算法(MD5)。
我们知道MD5加密的一个特征就是:雪崩效应(一旦被加密的内容发生一丁的点变化、将引起加密结果巨大的变化)
我们不妨设想一下:
在用户的本机电脑上有3个文件(Test1.txt | Test2.txt | Test3.txt)、用户只是修改了其中的一个:Test3.txt
尽管另外的2个用户并没有做任何修改、但是用户也把它拖入了上传的队列当中。
我的思考:
假设(Test1.txt | Test2.txt | Test3.txt)这3个文件服务器上已经存在一份了、只是Test3.txt这个文件不是最新
的。为了得到最好的用户体验最好的做法就是跳过(Test1.txt | Test2.txt)这2个文件,直接上传Test3.txt就行了。
但是我们首先需要解决的一个问题就是:我们知道Test3.txt被用户修改了、但是电脑并不清楚。
此处我再次假设一下:
如果我们有一种方法可以比对(服务器上已经存的文件 和用户端上需要上传的同名文件的)特征码(即:MD5加密结果)
:如果两者MD5加密的结果一致我们就认为该文件没有被修改、所以不需要上传。
:如果两者MD5加密的结果不一致我们就认为该文件被修改了、需要上传。
这样一来本来需要上传3个文件、现在只需上传一个文件(被修改的那一个)就可以了、如此一来速度显然要快上很多了。
总结:
百度网盘上传速度如此之快 自然离不了那些高大上的技术,并非我所能了解的,此不必多说了。
我的想法有些异想天开,但不并妨碍我求知的欲望... (^V^)
下面是一个有关于MD5的一个小例子:
第1次向 1.txt 写入的是"12345678" ;第2次向 1.txt写入的是 "12345678 "多一个空格.
[root@Director1 wbq]# touch 1.txt
[root@Director1 wbq]#
[root@Director1 wbq]# echo "12345678" > 1.txt
[root@Director1 wbq]#
[root@Director1 wbq]# cat 1.txt
12345678
[root@Director1 wbq]#
[root@Director1 wbq]# md5sum 1.txt
23cdc18507b52418db7740cbb5543e54 1.txt
[root@Director1 wbq]#
[root@Director1 wbq]# md5sum 1.txt
23cdc18507b52418db7740cbb5543e54 1.txt
[root@Director1 wbq]#
[root@Director1 wbq]# echo "12345678 " > 1.txt
[root@Director1 wbq]#
[root@Director1 wbq]# md5sum 1.txt
0a248abc4cfd2c83de82a5748b141cea 1.txt
快到让我吃惊之外、还多了一份好奇。使用百度上传文件的时候的用户体验是非常不错的
除了带宽的问题、这其中是不是还有些别的呢。在我学习到的知识当中我自然而然的想到
了单向加密算法(MD5)。
我们知道MD5加密的一个特征就是:雪崩效应(一旦被加密的内容发生一丁的点变化、将引起加密结果巨大的变化)
我们不妨设想一下:
在用户的本机电脑上有3个文件(Test1.txt | Test2.txt | Test3.txt)、用户只是修改了其中的一个:Test3.txt
尽管另外的2个用户并没有做任何修改、但是用户也把它拖入了上传的队列当中。
我的思考:
假设(Test1.txt | Test2.txt | Test3.txt)这3个文件服务器上已经存在一份了、只是Test3.txt这个文件不是最新
的。为了得到最好的用户体验最好的做法就是跳过(Test1.txt | Test2.txt)这2个文件,直接上传Test3.txt就行了。
但是我们首先需要解决的一个问题就是:我们知道Test3.txt被用户修改了、但是电脑并不清楚。
此处我再次假设一下:
如果我们有一种方法可以比对(服务器上已经存的文件 和用户端上需要上传的同名文件的)特征码(即:MD5加密结果)
:如果两者MD5加密的结果一致我们就认为该文件没有被修改、所以不需要上传。
:如果两者MD5加密的结果不一致我们就认为该文件被修改了、需要上传。
这样一来本来需要上传3个文件、现在只需上传一个文件(被修改的那一个)就可以了、如此一来速度显然要快上很多了。
总结:
百度网盘上传速度如此之快 自然离不了那些高大上的技术,并非我所能了解的,此不必多说了。
我的想法有些异想天开,但不并妨碍我求知的欲望... (^V^)
下面是一个有关于MD5的一个小例子:
第1次向 1.txt 写入的是"12345678" ;第2次向 1.txt写入的是 "12345678 "多一个空格.
[root@Director1 wbq]# touch 1.txt
[root@Director1 wbq]#
[root@Director1 wbq]# echo "12345678" > 1.txt
[root@Director1 wbq]#
[root@Director1 wbq]# cat 1.txt
12345678
[root@Director1 wbq]#
[root@Director1 wbq]# md5sum 1.txt
23cdc18507b52418db7740cbb5543e54 1.txt
[root@Director1 wbq]#
[root@Director1 wbq]# md5sum 1.txt
23cdc18507b52418db7740cbb5543e54 1.txt
[root@Director1 wbq]#
[root@Director1 wbq]# echo "12345678 " > 1.txt
[root@Director1 wbq]#
[root@Director1 wbq]# md5sum 1.txt
0a248abc4cfd2c83de82a5748b141cea 1.txt
相关文章推荐
- Java单向(非可逆)加密--MD5、SHA和HMAC
- MD5~单向散列加密
- JAVA单向加密(MD5,SHA,MAC)
- MD5 单向加密
- Java 详解单向加密--MD5、SHA和HMAC及简单实现实例
- java加密解密技术(2) 单向加密MD5
- MD5文件加密以及关于NIO中的FileChannel.map的一点看法
- MD5 单向加密,为保存用户密码
- JAVA单向加密(MD5,SHA,MAC)
- Linux GRUB MD5 加密
- MD5 加密解密 判断密码是否相等 全套实现方式
- C/C++使用openssl进行摘要和加密解密(md5, sha256, des, rsa)
- Java MD5 32位加密代码
- [游戏开发]关于手游客户端网络带宽压力的一点思考
- 数据库设计---关于建表的时候选择横表和竖表(纵表)的一点思考
- C++ MD5字符串加密
- 网络协议设计的一点思考
- 使用Apache digest可以做md5 SHA1 BASE64加密
- Java的MD5对密码进行加密和验证的类
- net cf HMAC MD5 加密