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 NIO API详解
在JDK
1.4以前,Java的IO操作集中在java.io这个包中,是基于流的阻塞(blocking)API。对于大多数应用来说,这样的API使用很方
便,然而,一些对性能要求较高的应用,尤其是服务端应用,往往需要一个更为有效的方式来处理IO。从JDK 1.4起,NIO
API作为一个基于缓冲区,并能提供非阻塞(non-blo ......
Java当中的序列化,其主要的作用是将类的实例进行无损传输,或者说就是通过Java的序列化机制,Java类的实例可以通过Object流来传输和重新获取,而不会损坏类的实例。
首先,我们看看什么样的类是序列化类,
1.A类自身实现了Serializable接口的类; ......
java 基本数据类型之间的转换
实箭头表示无数据丢失的转换
虚箭头表示有数据丢失的转换
在进行二元计算的时候,先将两个操作数转换为同一种类型,再计算
①如果两个数中有一个是double类型的,那么另一个也将转换为double类型;
&n ......
使用 Java 对 Linux 下文件编码格式进行批量转换
测试使用说明:
1。将 字符集编码格式为 GB2312 的文件 test0.java,test1.java,test2.java 放在 /home/defonds/tmp/test 目录下(test0.java,test1.java,test2.java 作者可以 ......
JAVA-字符串过滤类
package cn.com.hbivt.util;
/**
* Title:
*
* Description:
*
* Copyright: Copyright (c) 2005
*
* Company:
*
* @author not attributable
* @version 1.0
*/
public class StringUtils {
......