atitit.md5算法的原理 与 总结

atitit.md5算法的原理 与 总结

1. MD5的位数 128位1

2. 字节数组转换为32位字符串 base161

2.1. 十六进制字符用4个二进制位来表示1

2.2. byte[]和十六进制字符串相互转换2

3. md5的base64表示法3

4. 参考3

1. MD5的位数 128位

生成一个128为的字节数组。。

2. 字节数组转换为32位字符串 base16

每4位可以1111

正好0--f 可以完整的标识4位比特。。

2.1. 十六进制字符用4个二进制位来表示

十六进制的每个字符需要用4位二进制位来表示

2的四次方等于16。所以要用4个二进制位表示一个十六进制字符

作者:: 老哇的爪子 Attilax 艾龙,  EMAIL:[email protected]

转载请注明来源: http://blog.csdn.net/attilax

如下所示:


0


0000


1


0001


2


0010


3


0011


4


0100


5


0101


6


0110


7


0111


8


1000


9


1001


A


1010


B


1011


C


1100


D


1101


E


1110


F


1111

2.2. byte[]和十六进制字符串相互转换

Java中byte用二进制表示占用8位,而我们知道16进制的每个字符需要用4位二进制位来表示。

所以我们就可以把每个byte转换成两个相应的16进制字符,即把byte的高4位和低4位分别转换成相应的16进制字符H和L,并组合起来得到byte转换到16进制字符串的结果

new String(H) + new String(L)。

同理,相反的转换也是将两个16进制字符转换成一个byte,原理同上。

根据以上原理,我们就可以将byte[] 数组转换为16进制字符串了,当然也可以将16进制字符串转换为byte[]数组了

3. md5的base64表示法

4. 参考

Java byte数组与十六进制字符串互转 - 鑫鑫哥哥呀的个人页面 - 开源中国社区.htm

Java利用MessageDigest获取字符串或文件MD5详解 - 鼠穴 - 开源中国社区.htm

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-05 06:05:22

atitit.md5算法的原理 与 总结的相关文章

解析MD5算法

MD5实现128bit的Hash值的密码散列函数 1.MD5的作用: 在传输的时候,进行加密,防止恶意窃取数据. 2.MD5算法的原理: 填充输入信息,使其字节长度对512求余数为448. 信息的长度扩展为N*512+448 bit N为整数.然后将每个512bit的组分为16个32bit子分组,最后经过一系列的算法生成4个32bit共128bit的散列值 3.MD5算法的实现: 1 /* eslint-disable */ 2 var jQuery = require('jquery'); 3

MD5算法介绍及jdk自带实现方式

MD5算法,已经被人们熟知,作为一名资深或者入门级的开发者,都号称"MD5啊,知道知道".前几天程序略有小问题,原因是有的地方加密了,有的地方没加密.有个同事很得意的说,MD5就是个hash算法,很容易被解密的.当时我是无言以对了.因为俺记得MD5是不可逆的,既然不可逆,又哪里来的"解密"呢.于是我们在网上搜索"MD5解密",哇kao,竟然真的有结果,然则,事实并非那么简单,我们把MD5的一串序列放到"在线MD5解密"中去解密

Atitit.md5 实现原理

1. 算法流程图2 2. MD5算法过程:2 2.1. 3. 处理分组数据3 3. MD5加密字符串实例5 4. Md5的历史7 4.1.1. MD27 4.1.2. MD47 4.1.3. MD57 5.  处理P:8 6. 参考8 1. 算法流程图 2. MD5算法过程: 对MD5算法简要的叙述可以为:MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值. 第一步.

SHA-1,MD5算法原理

本文绝大部分内容来自<网络安全基础--应用与标准>第五版--清华大学出版社.其中蓝色部门是自己添加 安全散列函数 单向散列函数或者安全散列函数之所以重要,不仅在于消息认证(消息摘要,数据指纹),还有数字签名(加强版的消息认证)和验证数据的完整性.常见的单向散列函数有MD5和SHA 散列函数的要求 散列函数的目的是文件.消息或者其他数据块产生"指纹".为满足在消息认证中的应用,散列函数H必须具有下列性质: (1)H可适用于任意长度的数据块. (2)H能够生成固定长度的输出.

常见hash算法的原理(转)

常见hash算法的原理 散列表,它是基于快速存取的角度设计的,也是一种典型的“空间换时间”的做法.顾名思义,该数据结构可以理解为一个线性表,但是其中的元素不是紧密排列的,而是可能存在空隙. 散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构.也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度.这个映射函数叫做散列函数,存放记录的数组叫做散列表. 比如我们存储70个元素,但我们可能为这70个元素申请了100个元素的空间.7

常见hash算法的原理

转自:http://blog.csdn.net/zxycode007/article/details/6999984 散列表,它是基于快速存取的角度设计的,也是一种典型的“空间换时间”的做法.顾名思义,该数据结构可以理解为一个线性表,但是其中的元素不是紧密排列的,而是可能存在空隙. 散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构.也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度.这个映射函数叫做散列函数,存放记录的

MD5算法

MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致.是计算机广泛使用的杂凑算法之一(又译摘要算法.哈希算法),主流编程语言普遍已有MD5实现. 将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理,MD5的前身有MD2.MD3和MD4. MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串). 对MD5算法简要的叙述可以为:MD5以512位

MD5 算法

MD5 Message Digest Algorithm MD5(中文名为消息摘要算法第 五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护.该算法的文件号为RFC 1321(R.Rivest,MIT Laboratory for Computer Science and RSA Data Security Inc. April 1992). MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致.是计算机广泛使用的杂凑算法

MD5算法解析

MD5的全称是Message-Digest Algorithm 5,在90年代初由MIT的计算机科学实验室和RSA Data Security Inc发明,经MD2.MD3和MD4发展而来. MD5将任意长度的“字节串”变换成一个128bit的大整数,并且它是一个不可逆的字符串变换算法,换句话说就是,即使你看到源程序和算法描述,也无法将一个MD5的值变换回原始的字符串,从数学原理上说,是因为原始的字符串有无穷多个,这有点象不存在反函数的数学函数. MD5的典型应用是对一段Message(字节串)