MD5加密算法
2015-09-09 13:46
204 查看
MD5加密
用于md5加密的class[code]import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.nio.MappedByteBuffer; import java.nio.channels.FileChannel; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class MD5 { protected static char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; protected static MessageDigest messagedigest = null; static { try { messagedigest = MessageDigest.getInstance("MD5"); } catch (NoSuchAlgorithmException nsaex) { nsaex.printStackTrace(); } } /** * @Title: encryptionPasswordToMD5 * @author zhzh * @date * @version V1.0 * @Description: 通过MD5加密,并且字母转换成大写 * @param : * @return String * @throws */ public static String encryptionPasswordToMD5(String str){ return toMD5(str).toUpperCase(); } private static String toMD5(String s) { s = s == null ? "" : s; String strRet = null; try { byte[] strTemp = s.getBytes(); messagedigest.update(strTemp); byte[] md = messagedigest.digest(); int j = md.length; char str[] = new char[j * 2]; int k = 0; for (int i = 0; i < j; i++) { byte b = md[i]; str[k++] = hexDigits[b >>> 4 & 0xf]; str[k++] = hexDigits[b & 0xf]; } strRet = new String(str); } catch (Exception e) { e.printStackTrace(); } return strRet; } public static void main(String[] args) { System.out.println(toMD5("XSK0609.xjx")); System.out.println(encryptionPasswordToMD5("XSK0609.xjx")); // System.out.println(toMD5("1")); // System.out.println("admin:\t" + toMD5("admin")); // System.out.println("1:\t" + toMD5("1")); // System.out.println("123456:\t" + toMD5("123456")); // System.out.println(":\t" + toMD5("")); // System.out.println("null:\t" + toMD5(null)); // System.out.println("test1:\t" + toMD5("test1")); // System.out.println("test2:\t" + toMD5("test2")); // System.out.println("ghccing9119:\t" + toMD5("ghccing9119")); // System.out.println("ghccing119:\t" + toMD5("ghccing119")); } public static String getFileMD5String(File file) throws IOException { FileInputStream in = new FileInputStream(file); FileChannel ch = in.getChannel(); MappedByteBuffer byteBuffer = ch.map(FileChannel.MapMode.READ_ONLY, 0, file.length()); messagedigest.update(byteBuffer); return bufferToHex(messagedigest.digest()); } public static String getMD5String(String s) { return getMD5String(s.getBytes()); } public static String getMD5String(byte[] bytes) { messagedigest.update(bytes); return bufferToHex(messagedigest.digest()); } private static String bufferToHex(byte bytes[]) { return bufferToHex(bytes, 0, bytes.length); } private static String bufferToHex(byte bytes[], int m, int n) { StringBuffer stringbuffer = new StringBuffer(2 * n); int k = m + n; for (int l = m; l < k; l++) { appendHexPair(bytes[l], stringbuffer); } return stringbuffer.toString(); } private static void appendHexPair(byte bt, StringBuffer stringbuffer) { char c0 = hexDigits[(bt & 0xf0) >> 4]; char c1 = hexDigits[bt & 0xf]; stringbuffer.append(c0); stringbuffer.append(c1); } public static boolean checkPassword(String password, String md5PwdStr) { String s = getMD5String(password); return s.equals(md5PwdStr); } }
相关文章推荐
- CentOS安装VMware Tools
- Memcached Install
- [转]Android输出Log到文件
- css3背景色渐变
- Leetcode Remove Element
- Objective-C中的Block
- 动画《魁拔妖侠传》反思
- Zabbix教程-Zabbix配置文件详解
- Uva 1632 alibaba 区间dp
- 设计模式 - 观察者模式
- 处理文字过长显示超出解决方案(纯css解决)
- hdu4864Task(馋)
- 自动装箱和拆箱所带来的问题(1)“==”问题
- 【Xamarin 在Mac OS 上的部署安装环境】
- 《微历史.王牧》观后感
- 使用Struts 2将客户端JSON数据映射为服务器端Java对象
- 至linuxNIC添加多个IP
- Spring part 4:数据库连接池的配置
- Linux : misc_register、 register_chrdev 的区别总结
- Spring事务配置的5种方式