消息摘要算法的简单应用(用java实现简单的MD5算法)

您所在的位置:网站首页 如何修改编码长度 消息摘要算法的简单应用(用java实现简单的MD5算法)

消息摘要算法的简单应用(用java实现简单的MD5算法)

2023-05-26 01:48| 来源: 网络整理| 查看: 265

//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