`

Java中使用MD5进行加密

阅读更多
在各种应用系统的开发中,经常需要存储用户信息,很多地方都要存储用户密码,而将用户密码直接存储在服务器上显然是不安全的,本文简要介绍工作中常用的 MD5加密算法,希望能抛砖引玉。
(一)消息摘要简介
一个消息摘要就是一个数据块的数字指纹。即对一个任意长度的一个数据块进行计算,产生一个唯一指印(对于SHA1是产生一个20字节的二进制数组)。消息摘要是一种与消息认证码结合使用以确保消息完整性的技术。主要使用单向散列函数算法,可用于检验消息的完整性,和通过散列密码直接以文本形式保存等,目前广泛使用的算法有MD4、MD5、SHA-1。

消息摘要有两个基本属性:

两个不同的报文难以生成相同的摘要
难以对指定的摘要生成一个报文,而可以由该报文反推算出该指定的摘要
代表:美国国家标准技术研究所的SHA1和麻省理工学院Ronald Rivest提出的MD5

(二)对字符串进行加密

    /** *//**利用MD5进行加密
     * @param str  待加密的字符串
     * @return  加密后的字符串
     * @throws NoSuchAlgorithmException  没有这种产生消息摘要的算法
     * @throws UnsupportedEncodingException  
     */
    public String EncoderByMd5(String str) throws NoSuchAlgorithmException, 
UnsupportedEncodingException...{
        //确定计算方法
        MessageDigest md5=MessageDigest.getInstance("MD5");
        BASE64Encoder base64en = new BASE64Encoder();
        //加密后的字符串
        String newstr=base64en.encode(md5.digest(str.getBytes("utf-8")));
        return newstr;
    }
    调用函数:String str="0123456789"

     System.out.println(EncoderByMd5(str));

    输出:eB5eJF1ptWaXm4bijSPyxw==

    (三)验证密码是否正确

    因为MD5是基于消息摘要原理的,消息摘要的基本特征就是很难根据摘要推算出消息报文,因此要验证密码是否正确,就必须对输入密码(消息报文)重新计算其摘要,和数据库中存储的摘要进行对比(即数据库中存储的其实为用户密码的摘要),若两个摘要相同,则说明密码正确,不同,则说明密码错误。


 
  /** *//**判断用户密码是否正确
     * @param newpasswd  用户输入的密码
     * @param oldpasswd  数据库中存储的密码--用户密码的摘要
     * @return
     * @throws NoSuchAlgorithmException
     * @throws UnsupportedEncodingException
     */
    public boolean checkpassword(String newpasswd,String oldpasswd) throws NoSuchAlgorithmException, 
UnsupportedEncodingException...{
        if(EncoderByMd5(newpasswd).equals(oldpasswd))
            return true;
        else
            return false;
    }



具体如下:
package com.common.util.md5;

import java.io.FileWriter;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

import sun.misc.BASE64Encoder;

/**
 * @author vvvvvv
 * @version 創建時間:Jan 21, 2010 10:44:05 AM
 * 参看:http://blog.sina.com.cn/s/blog_4b86f2ee010006t5.html
 * http://www.iteye.com/topic/202896
 * 類說明:MakeMd5.java
 */
public class MakeMd5 {

	public String EncodeByMd5(String str) throws NoSuchAlgorithmException, UnsupportedEncodingException{
		//确定计算方法
		//目前广泛使用的算法有MD4、MD5、SHA-1,jdk1.5对上面都提供了支持,在java中进行消
		//息摘要很简单, java.security.MessageDigest提供了一个简易的操作方法:
	    //使用getInstance("算法")来获得消息摘要,这里使用SHA-1的160位算法
		MessageDigest md5 =MessageDigest.getInstance("MD5");
		BASE64Encoder base64Encoder = new BASE64Encoder();
		
		//加密后的字符串
		String newStr = base64Encoder.encode(md5.digest(str.getBytes("utf8")));
		
		return newStr;
	}
	
	/**
	 * 加密的具体应用
	 * @author vvvv
	 * @time Jan 21, 201011:52:28 AM
	 * @param @param newPassword  页面的接收值
	 * @param @param oldPassword 数据库中存储的密码--用户密码的摘要  

	 * @param @throws NoSuchAlgorithmException
	 * @param @throws UnsupportedEncodingException
	 * return boolean
	 */
	public boolean checkPassword(String newPassword, String oldPassword) throws NoSuchAlgorithmException, UnsupportedEncodingException{
		if(EncodeByMd5(newPassword).equals(oldPassword)){
			return true; //密码一致
		}else{
			return false ;//密码不一致
		
		}
	}
	
	
	
	public String writeToFile(String newString) throws IOException{
		FileWriter fw = new FileWriter("D:/aa.txt");
		fw.append(newString);
		fw.flush();
		fw.close();
		return null;
	}
	/**
	 * @author vvvv
	 * @throws NoSuchAlgorithmException 
	 * @throws IOException 
	 * @time Jan 21, 201010:44:05 AM
	 * return void
	 */
	public static void main(String[] args) throws NoSuchAlgorithmException, IOException {
		MakeMd5 md5 = new MakeMd5();
		System.out.println(md5.EncodeByMd5("张三"));
		md5.writeToFile("sadf"+md5.EncodeByMd5("zzz"));
	}

}


参看:
http://school.cfan.com.cn/pro/java/2007-06-11/1181531460d67777.shtml
分享到:
评论

相关推荐

    java Md5加密方法 java Md5加密方法 java Md5加密方法

    java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密方法 java Md5加密...

    在java中使用MD5进行密码加密

    ### 在Java中使用MD5进行密码加密 #### 知识点概述 在现代软件开发过程中,安全性至关重要。尤其是在处理敏感信息如用户密码时,确保数据的安全性和隐私性尤为重要。MD5(Message-Digest Algorithm 5)是一种广泛...

    java Md5加密方法 java Md5加密方法

    java Md5加密方法 java Md5加密方法java Md5加密方法 java Md5加密方法java Md5加密方法 java Md5加密方法java Md5加密方法 java Md5加密方法java Md5加密方法 java Md5加密方法java Md5加密方法 java Md5加密方法...

    JAVA的hex_md5加密

    java中的MD532位加密。将java类放入项目中,使用encrypByMd5静态方法即可生成hex_md5 32位加密的字符串。

    JAVA_对文件MD5加密

    下面我们将详细介绍如何使用Java语言实现对文件进行MD5加密的过程。 #### MD5加密原理 MD5算法通过一系列复杂的数学运算,将输入的信息转换为一个固定的128位输出值。该输出值通常被表示为一个32位的十六进制数,...

    C#md5加密对应Java-md5加密

    C# MD5加密类型支持:1-16位的加密;2-32位加密;3:base64加密对应JAVA md5 16位的加密;2-32位加密;3:base64加密

    Java中实现Md5(32位)加密

    Java中实现Md5(32位)加密,此资源下载后可直接在程序中使用

    java实现md5 加密解密

    java实现md5 加密解密(在网络中MD5是著名的不可逆算法,但是如果知道MD5的加密的字符串 则可以通过自己的加密算法对明文进行加密,对加密后的密文与字符串匹配; 匹配成功,表示找到明文;但是此程序的时间耗费较高!仅...

    java与c#MD5加密方法得到不一致解决办法

    java与c#MD5加密方法得到不一致解决办法,MD5加密后得到不一致结果

    JAVA中MD5加密密码算法

    在Java编程语言中,MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,主要目的是为了产生一个固定长度的、不可逆的数字摘要,常用于存储密码。MD5算法将任意长度的输入(也叫做预映射,pre-image)通过...

    JAVA中MD5加密

    在Java编程语言中,MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它将任意长度的数据转化为固定长度的输出,通常为32位的16进制字符串。MD5的主要用途是对数据进行校验,确保数据在传输过程中没有被...

    java后台及前端js使用AES互相加解密及前端md5加密

    本主题涉及的是在Java后台与前端JavaScript之间利用AES(Advanced Encryption Standard)进行加解密,以及前端的MD5(Message-Digest Algorithm 5)加密技术。以下是关于这些知识点的详细解释: 1. **AES加密**:...

    MD5Encoder.rar_MD5 JAVA_MD5Encoder

    下面我们将详细讨论如何在Java中使用MD5进行加密。 首先,你需要导入必要的Java安全库: ```java import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; ``` 然后,你可以创建一个`...

    MD5加密32位小写

    在提供的压缩包文件“MD5”中,可能包含了一个Java程序示例,演示了如何使用MD5加密并生成32位小写的哈希值。这个程序可以作为一个基础模板,帮助开发者快速集成MD5功能到自己的项目中。 总之,MD5是一种便捷的哈希...

    java 实现文件MD5 加密比较,防止上传重复文件

    这个类可以实现,java语言下通过对上传文件进行MD5加密,然后将加密值与原来上传的文件加密值进行对比,防止上传重复文件。

    java中如何使用MD5进行加密

    以下是关于Java中使用MD5进行加密的详细介绍: 1. **MD5的特性** - **唯一性**:对于不同的输入,MD5会产生不同的摘要。 - **不可逆性**:由于MD5是单向的,无法从摘要中恢复原始数据。 - **抗碰撞**:虽然MD5...

    md5加密java写法轻松实现md5让你学会加密,会的可以给点建议,不会的可以借鉴,大家讨论加密!很方便的使用!

    md5加密java写法轻松实现md5让你学会加密,会的可以给点建议,不会的可以借鉴,大家讨论加密!很方便的使用!

    java实现MD5加密算法

    总结,Java实现MD5加密算法主要是通过`java.security.MessageDigest`类,经过`getInstance("MD5")`获取MD5实例,然后使用`digest()`和`update()`方法处理数据,最终将二进制摘要转换为十六进制字符串。尽管MD5的安全...

    java常用类-MD5加密与DES加密解密

    java中常用的工具类,用于MD5的加密,里面还有切割了MD5加密的长度,有DES加密与解密,并且配有main函数可测试,可以根据自己的实际情况使用main函数测试使用

    java中关于Springboot加密 md5加密,注册密码加密到数据库中的关键语句,md5加密语句.pdf

    在Spring Boot中,我们可以使用`DigestUtils.md5DigestAsHex()`方法来对字符串进行MD5加密。这个方法接受一个字节数组作为参数,返回一个32位的小写十六进制字符串,代表了原始字符串的MD5哈希值。以下是一个简单的...

Global site tag (gtag.js) - Google Analytics