使用MD5对明文密码进行加密

来源:互联网 发布:淘宝网店申请多少钱 编辑:程序博客网 时间:2024/05/17 01:44

通常情况下,我们不希望任何人知道我们的密码。

当我们创建了用户以后,我们的个人信息将会存储在服务器数据库中,如果有人可以访问数据库,便可以轻易的拿到我们的用户名和密码等一系列重要数据。为防止这种情况,我们可以使用加密的方式对密码进行加密。


以下是StringUtils工具类,创建出来以后我们可以调用encrypt方法将password传入,并接受返回出来的心得newPassword,然后将newPassword存入数据库中,当登录时,则是转换后的newPassword跟数据库中保存的password比较,即便系统管理员查看了数据库中的用户信息,也无法根据保存的password计算出我们登录时所填写的密码。因此便增加了数据的安全性。


import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;public class StringUtils {/** * Used by the hash method. */private static MessageDigest digest = null;/** * 利用MD5算法散列字符串作为一个十六进制数的字符串返回结果。 * @param data * @return */public synchronized static final String hash(String data) {if (digest == null) {try {digest = MessageDigest.getInstance("MD5");} catch (NoSuchAlgorithmException nsae) {System.err.println("Failed to load the MD5 MessageDigest. "+ "Jive will be unable to function normally.");}}// Now, compute hash.digest.update(data.getBytes());return encodeHex(digest.digest());}/** * 返回一个字符串的加密形式。 MD5 算法 */public static String encrypt(String originalStr) {if (originalStr == null) {originalStr = "";}return hash(originalStr);}/** * 将字节数组变成一个字符串,表示每个字节为一个无符号十六进制数。 * @param bytes * @return */public static final String encodeHex(byte[] bytes) {StringBuffer buf = new StringBuffer(bytes.length * 2);int i;for (i = 0; i < bytes.length; i++) {if (((int) bytes[i] & 0xff) < 0x10) {buf.append("0");}buf.append(Long.toString((int) bytes[i] & 0xff, 16));}return buf.toString();}}


0 0