MD5加密Java代码?别找了,就这30行直接抄
到了学期末的时候, 要做项目, 这个项目需要对用户密码采取MD5加密, 为此在网上查找了好多资料, 之后进行了修改, 还给修改后的内容加上了注释, 现在把源码张贴上来。
org..util; java.io.; java..; java..tion; /** * 32位MD5加密,验证 * @ */ class MD5 { /*** 将指定的字符串用MD5加密
* @param 需要加密的字符串
* @ 加密后的字符串
*/ ( ){ = null; char= {//用来将字节转换成 16 进制表示的字符
其中包含, '0', '1', '2', '3', '4', '5', '6', '7' , '8', '9', 除此以外还有, 'a', 'b', 'c', 'd', 'e', 'f'。
if( != null){ try {//返回实现指定摘要算法的 对象
md = .("MD5");
//使用utf-8编码将字符串编码并保存到字节数组
byte
= .("utf-8");
//使用指定的 byte 数组更新摘要
md.();
对哈希计算予以完成, 得借助执行像填充这类的最终操作, 其结果呈现为一个长整数, 这个长整数是128位的。
byte
tmp = md.();
//用16进制数表示需要32位
char
str = new char
32
对于, 整型变量i赋值为0, 同时整型变量j赋值为0, 当i小于16时, i进行自增。
//j表示转换结果中对应的字符位置
//从第一个字节开始,对 MD5 的每一个字节
//转换成 16 进制字符
byte b = tmp
//取字节中高 4 位的数字转换
//无符号右移运算符>>> ,它总是在左边补0
要知道, 0x是表明它后面跟着的属于十六进制的数字, 其中, f转化为十进制最终呈现的结果是15。
str
j++
=
b>>>4 & 0xf
// 取字节中低 4 位的数字转换
str j++ = b&0xf = new (str);//结果转换成字符串用于返回 } catch (tion e) {//当请求特定的加密算法而它在该环境中不可用时抛出此异常
e.(); } catch ( e) { //不支持字符编码异常 e.(); ; //使用MD5检查密码 (, ){ if(()。(())){ true; false;