消息摘要算法的简单应用(用java实现简单的MD5算法) |
您所在的位置:网站首页 › 如何修改编码长度 › 消息摘要算法的简单应用(用java实现简单的MD5算法) |
//MD5:
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MD5 {
public static void main(String[] args) throws NoSuchAlgorithmException {
String text = "Hello World";
// 获取MD5摘要对象
MessageDigest md = MessageDigest.getInstance("MD5");
// 添加要计算的数据
md.update(text.getBytes());
// 计算MD5摘要
byte[] digest = md.digest();
// 将字节数组转换为十六进制字符串
StringBuffer sb = new StringBuffer();
for (byte b : digest) {
sb.append(Integer.toHexString((b & 0xFF) | 0x100).substring(1,3));
}
System.out.println("MD5摘要结果:" + sb.toString());
}
}
MD5算法主要由以下四个部分组成: 填充(padding): 在MD5算法中,首先需要对输入的数据进行填充。假设输入数据长度为L比特,则需要按照如下方式进行填充:首先,补充一个"1"到数据末尾;然后,填充若干个"0",使得总位数变为k512-L-64(k为任意大于等于0的整数),最后,再把长度L编码为64位二进制数,填充到数据末尾。这样,在填充之后,数据总长度必然是512比特的整数倍,即N512(N为任意正整数)。 初始化向量(IV): 初始化向量是一个固定的、公开的、预定义的128位二进制数,它用于MD5算法的初始运算。 四轮循环操作(Four rounds): 将填充后的数据按照512比特一块进行分组,并依次进行四轮循环操作。每一轮循环有16步,每步对一个32比特的字进行操作,使用了四个非线性函数、线性函数、模2的和以及循环左移和右移等计算方法。 输出(Output): 经过四轮循环操作后,得到的结果组成128位数字摘要,即MD5值。MD5算法通常以16进制表示MD5值,即使用32个16进制数来表示128位数字摘要。 SHA1算法主要由以下四个步骤组成: |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |