📄 testmd5.java
字号:
package pkSecurity;
import java.security.*;
import java.math.*;
/*
检验你的实现是否正确:
MD5 ("") = d41d8cd98f00b204e9800998ecf8427e
MD5 ("a") = 0cc175b9c0f1b6a831c399e269772661
MD5 ("abc") = 900150983cd24fb0d6963f7d28e17f72
MD5 ("message digest") = f96b697d7cb7938d525a2f31aaf161d0
MD5 ("abcdefghijklmnopqrstuvwxyz") = c3fcd3d76192e4007dfb496cca67e13b
*/
public class TestMd5
{
public String MD5(String sInput) throws Exception
{
String algorithm = "";
//输入不能为空
if(sInput.trim() == null)
{
return "null";
}
//指定采用MD5算法
try
{
algorithm = System.getProperty("MD5.algorithm","MD5");
}
catch(SecurityException se)
{
}
//定义MessageDigest对象
MessageDigest md = MessageDigest.getInstance(algorithm);
//按照系统缺省的字符编码方式把sInput 转换成字节,并把结果存到一新的字节数组buffer中
byte buffer[] = sInput.getBytes();
md.update(buffer);
//通过执行最后的诸如填充的操作完成散列码的计算。 在调用之后复位该摘要
//返回存放结果散列值的字节数组bDigest
char hexDigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd','e', 'f'};
byte bDigest[] = md.digest();
int j = bDigest.length;
char str[] = new char[j * 2];
int k = 0;
for (int i = 0; i < j; i++)
{
byte byte0 = bDigest[i];
str[k++] = hexDigits[byte0 >>> 4 & 0xf];
str[k++] = hexDigits[byte0 & 0xf];
}
return new String(str);
}
public static void main(String [] a)
{
TestMd5 my = new TestMd5();
try
{
System.out.println(my.MD5("abc"));
System.out.println(my.MD5 ("") ); // = d41d8cd98f00b204e9800998ecf8427e
System.out.println(my.MD5 ("a") ); // = 0cc175b9c0f1b6a831c399e269772661
System.out.println(my.MD5 ("abc") ); // = 900150983cd24fb0d6963f7d28e17f72
System.out.println(my.MD5 ("message digest") ); // = f96b697d7cb7938d525a2f31aaf161d0
System.out.println(my.MD5 ("abcdefghijklmnopqrstuvwxyz") ); // = c3fcd3d76192e4007dfb496cca67e13b
}
catch (Exception e)
{
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -