工作点滴积累(1)---MD5和编码
今天同事忽然问了一个问题,他发现同一个字符,比如"电影",用项目中的md5工具类生成的hash值和网上提供的在线MD5生成的hash值有时不一样,在只包含了字母字符串中,生成的hanh值都是一样的,我看了一下项目里面的md5工具类,其中有这样一段代码
InputStream fis = new FileInputStream(fileName);
byte buffer[] = new byte[1024];
MessageDigest md5 = MessageDigest.getInstance(hashType);
for (int numRead = 0; (numRead = fis.read(buffer)) > 0;) {
md5.update(buffer, 0, numRead);
}
fis.close();
从代码可以看出,最后生成的hash值和文件的字节内容有关,这里强调一下"字节",是因为不同的编码方式,最后保存到硬盘的字节内容也就不一样了,我们知道utf-8和gbk的就不一样。
因为在线的MD5我们无法探究它会使用何种方式编码,所以我们只能猜测一种可能的原因就是对字符串的编码格式不一样。
初次之外在网上经常看到大写、小写的MD5,因为经过MD5算法生成的结果中包含了0~1、a~f这16个字符,而这里的大、小写也就是指的a~f还是A~F
例如如下是"电影"字符的hash结果:
3F8D131D1086EF12F2EED2D845D2F7D7
3f8d131d1086ef12f2eed2d845d2f7d7
它俩的区别仅在a~f这几个字符的大小写上面,而且这是一个32位的MD5 hash值,MD5中有16位和32位的区分,如下是"电影"字符16位的hash值:
1086EF12F2EED2D8
1086ef12f2eed2d8
也就是生成的hash值的字符长度为16。
注:以上的MD5计算结果使用的是在线工具http://www.senparc.com/WebTools.xhtml/MD5。
工作点滴积累(1)---MD5和编码的更多相关文章
- 【点滴积累】通过特性(Attribute)为枚举添加更多的信息
转:http://www.cnblogs.com/IPrograming/archive/2013/05/26/Enum_DescriptionAttribute.html [点滴积累]通过特性(At ...
- 移动前端webApp开发点滴积累20140629
#移动前端webApp开发点滴积累20140629 ##关于input行内居中的问题 给input设定一个比较高的高度,在某些版本的移动设备上,文字不能垂直居中,即使设定了相同的行高也不行.(见图) ...
- Vim编辑器点滴积累
Vim编辑器点滴积累 vim tab键空格数量控制 参考链接 临时:进入VIM,执行: :set tabstop=4 永久:编辑用户目录下.vimrc文件,添加:set tabstop=4 vim 安 ...
- 【MD5加密】MD5加密编码的坑
MD5 MD5即Message-Digest Algorithm (信息-摘要算法5),用于确保信息传输完整一致. 是计算机广泛使用的杂凑算法之一(又译摘要算法.哈希算法),主流编程语言普遍已有MD5 ...
- python中的字符串编码问题——4.unicode编解码(以实际工作中遇到的韩文编码为例)
韩文unicode编解码 问题是这样,工作中遇到有韩文数据出现乱码,说是unicode码. 类似这样: id name 323 52186863 149 63637538 314 65516863 ...
- 【点滴积累,厚积薄发】windows schedule task中.exe程序的路径问题等问题总结
1.在发布ReportMgmt的Job时遇到一个路径问题,代码如下: doc.Load(@"Configuration\Business\business.config"); ...
- sybase常用SQL语句,工作中积累的
-------创建sybase设备 语句--------- disk init name="DEV_DB_CLIENT_DAT26", physname="F:\syba ...
- sql查询学习和实践点滴积累
https://blog.rjmetrics.com/2008/10/28/correlated-subqueries-in-mysql/ http://www.mysqltutorial.org/m ...
- Excel 点滴积累
1.Excel中截取邮件@之后的字符 MID(text, start_num, num_chars) FIND(find_text,within_text,start_num) Right(strin ...
随机推荐
- Linux 64位编译\链接32位程序
测试机器:Ubuntu14.04 64位 gcc编译32位程序,添加参数-m32: $ gcc -c -fno-builtin -m32 TinyHelloWorld.c ld链接32位代码,添加参数 ...
- 详说 Cookie, LocalStorage 与 SessionStorage
本文最初发布于我的个人博客:咀嚼之味 最近在找暑期实习,其中百度.网易游戏.阿里的面试都问到一些关于HTML5的东西,问题大多是这样开头的:“你用过什么HTML5的技术呀?” 而后,每次都能扯到 Co ...
- 第一章:1-06、 试将TCP/IP和OSI的体系结构进行比较。讨论其异同之处?
<计算机网络>谢希仁著第四版课后习题答案答:(1)OSI和TCP/IP的相同点是二者均采用层次结构,而且都是按功能分层.(2)OSI和TCP/IP的不同点:①OSI分七层,自下而上分为物理 ...
- shell下添加计划性任务
*/1 * * * * /bin/sh /tmp/hello.sh ###每1分钟执行以下/tmp下的hello.sh脚本 service crond restart 重启任务计划 * 12 * ...
- VS2010在非IE浏览器下调试Silverlight程序
以Chrome为例: 第一步:在程序中设置断点. 第二步:右键点击web应用程序的起始页(.html或.aspx文件),选择"浏览方式",选中Chrome或其它非IE浏览器,点&q ...
- js 获取当天23点59分59秒 时间戳 (最简单的方法)
js 获取当天23点59分59秒 时间戳 (最简单的方法) new Date(new Date(new Date().toLocaleDateString()).getTime()+24*60*60* ...
- asp 301跳转代码
<% Response.Status="301 Moved Permanently" Response.AddHeader "Location&quo ...
- object在ie8与ie9中与下文多出几像素问题
今天发现一个很古怪的问题,object与下面文字部分的间隔超过了30个像素,关系是不管用padding还是margin都是一样的效果: 给其设置overflow:hidden属性依然没有任何效果,再设 ...
- PhpStrom 配置Xdebug
1 到 http://xdebug.org/download.php下载xdebug.注意找到自己对应的php版本.或者可以通过 http://xdebug.org/wizard.php页面,将php ...
- thinkphp 字段静态验证$_validate中错误提醒多语言化写成{%LANGUATE}的原因
class UserModel extends Model{ protected $_validate = array( array('account', 'require', '{%LANGUAG ...