MD5值加密并转为16进制

来源:互联网 发布:中世纪手机游戏知乎 编辑:程序博客网 时间:2024/06/04 00:21

加密方式:MD5值

二进制转十六进制


private static MessageDigest digest = null;/** * Hashes a String using the Md5 algorithm and returns the result as a * String of hexadecimal numbers. This method is synchronized to avoid * excessive MessageDigest object creation. If calling this method becomes a * bottleneck in your code, you may wish to maintain a pool of MessageDigest * objects instead of using this method. * <p> * A hash is a one-way function -- that is, given an input, an output is * easily computed. However, given the output, the input is almost * impossible to compute. This is useful for passwords since we can store * the hash and a hacker will then have a very hard time determining the * original password. * <p> * In Jive, every time a user logs in, we simply take their plain text * password, compute the hash, and compare the generated hash to the stored * hash. Since it is almost impossible that two passwords will generate the * same hash, we know if the user gave us the correct password or not. The * only negative to this system is that password recovery is basically * impossible. Therefore, a reset password method is used instead. *  * @param data *            the String to compute the hash of. * @return a hashed version of the passed-in String */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.");nsae.printStackTrace();}}// Now, compute hash.digest.update(data.getBytes());return toHex(digest.digest());}/** * Turns an array of bytes into a String representing each byte as an * unsigned hex number. * <p> * Method by Santeri Paavolainen, Helsinki Finland 1996<br> * (c) Santeri Paavolainen, Helsinki Finland 1996<br> * Distributed under LGPL. *  * @param hash *            an rray of bytes to convert to a hex-string * @return generated hex string */public static final String toHex(byte hash[]) {StringBuffer buf = new StringBuffer(hash.length * 2);int i;for (i = 0; i < hash.length; i++) {if (((int) hash[i] & 0xff) < 0x10) {buf.append("0");}buf.append(Long.toString((int) hash[i] & 0xff, 16));}return buf.toString();}



0 0
原创粉丝点击