java中字符串 MD5密码的加密与验证
摘自:java JDK 实例宝典
MD5即Message-Digest Algorithm 5(信息-摘要算法 5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。
将数据(如汉字)运算为另一固定长度值是杂凑算法的基础原理,MD5的前身有MD2、MD3和MD4。
本实例介绍用MD5进行加密和验证,将输入字符串通过MD5加密成另一个字符串,而且根据新的字符串无法获得原字符串,但可以在不知道原始密码的情况下进行密码验证。
关键技术:
*通过java.security.MessageDigest的静态方法getInstance创建具有指定算法名称的信息摘要,参数为算法名,传入“MD5”则表示将使用MD5算法。
*MessageDigest的digest实例方法使用指定的字节数组对摘要进行最后更新,然后完成摘要计算,返回存放哈希值结果的季节数组,这个数组就是MD5加密产品。
*将加密后的字节数组转换成十六进制的字符窜,形成最终的密码。
*当输入字符串经过MD5加密后,得到的字符串与密码一样,则认为密码验证通过。
实例演示:
import java.security.MessageDigest;
/**
*
* @author 雁过留声
*/
public class Password {
//16进制下数字到字符的映射数组
private static String[] hexDigits = new String[]{"0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"};
//将inputstr加密
public static String createPassword(String inputstr)
{
return encodeByMD5(inputstr);
}
//验证密码是否正确
public static boolean authenticatePassword(String pass , String inputstr)
{
if(pass.equals((encodeByMD5(inputstr))))
{
return true;
}
else
{
return false;
}
}
//对字符串进行MD5编码
private static String encodeByMD5(String originstr)
{
if(originstr !=null)
{
try{
//创建具有指定算法名称的信息摘要
MessageDigest md = MessageDigest.getInstance("MD5");
//使用指定的字节数组对摘要进行最后的更新,然后完成摘要计算
byt
相关文档:
Java学习从入门到精通
一、 JDK (Java Development Kit)
JDK是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库(rt.jar)。不论什么Java应用服务器实质都是内置了某个版本的JDK。因此掌握JDK是学好Java的第一步。最主流的J ......
Person p=new Person();
这是什么?当然是实例化一个对象了.可是这种实例化对象的方法存在一个问题,那就是必须要知道类名才可以实例化它的对象,这样我们在应用方面就会受到限制.那么有没有这样一种方式,让我们不知道这个类的类名就可以实例化它的对象呢?Thank Goodness!幸亏我们用的是java, java就提供了这样的机制.
1).ja ......
核心思想:把含main方法的入口类添加到MANIFEST.MF文件中。
步骤:
假设有两个类文件要打包,它们分别属于不同的package。
package com.test.jar;
import java.awt.*;
import javax.swing.*;
public class Jar extends JFrame
{ ......