Md5Util 加密工具类
来源:互联网 发布:淘宝一元秒杀验证码 编辑:程序博客网 时间:2024/06/11 16:16
在各种应用系统的开发中,经常需要存储用户信息,很多地方都要存储用户密码,而将用户密码直接存储在服务器上显然是不安全的,本文简要介绍工作中常用的 MD5加密算法,希望能抛砖引玉。
简述
MD5: 全称为message digest algorithm 5(信息摘要算法), 可以进行加密, 但是不能解密, 属于单向加密, 通常用于文件校验Base64: 把任意序列的8为字节描述为一种不易为人识别的形式, 通常用于邮件、http加密. 登陆的用户名和密码字段通过它加密, 可以进行加密和解密.
(一)消息摘要简介
一个消息摘要就是一个数据块的数字指纹。即对一个任意长度的一个数据块进行计算,产生一个唯一指印(对于SHA1是产生一个20字节的二进制数组)。消息摘要是一种与消息认证码结合使用以确保消息完整性的技术。主要使用单向散列函数算法,可用于检验消息的完整性,和通过散列密码直接以文本形式保存等,目前广泛使用的算法有MD4、MD5、SHA-1。
小编自己也封装了一个自己常用的Md5进行平常的加密类
具体代码如下:
package utils;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;/** * MD5加密工具 * * @author Administrator */public class Md5Util { private static char hexDigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; private static MessageDigest messagedigest = null; static { try { messagedigest = MessageDigest.getInstance("MD5"); } catch (NoSuchAlgorithmException e) { // logger.error("MD5FileUtil messagedigest初始化失败", e); } } /** * 获取文件的MD5值 * * @param file * @return * @throws IOException */ public static String getFileMD5String(File file) throws IOException { return getFileMD5String(file, 0, -1); } /** * 获取文件的MD5值 * * @param file * @param start * @param length * @return * @throws IOException */ public static String getFileMD5String(File file, long start, long length) throws IOException { FileInputStream fis = new FileInputStream(file); FileChannel ch = fis.getChannel(); long remain = file.length() - start; if (length < 0 || length > remain) { length = remain; } MappedByteBuffer byteBuffer = ch.map(FileChannel.MapMode.READ_ONLY, start, length); messagedigest.update(byteBuffer); return bufferToHex(messagedigest.digest()); } /** * 获取字符串的MD5加密的结果 * * @param s * @return */ 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); }}
阅读全文
0 0
- 加密工具类MD5Util
- Md5Util 加密工具类
- java实现MD5加密 MD5Util工具类
- MD5Util开发工具类
- MD5Util加密
- MD5Util 加密
- MD5Util 与混淆有关的工具类
- Java---MD5Util加密
- Md5Util和Base64Util加密
- Java:MD5Util:MD5加密
- Python 边做边学 8.5 工具类--MD5工具(Md5Util)
- MD5Util (MD5加密摘要算法)。
- Md5Util
- MD5util
- MD5Util
- MD5Util
- MD5Util
- Md5Util
- Django编写RESTful API(一):序列化
- 注册表------数据结构--数据库
- cmd编译运行java无法加载主类(前提:环境变量没问题,主函数没问题)
- leetcode 19 题解 翻译 Python版
- C#3.0 之扩展方法
- Md5Util 加密工具类
- OkHttp二次封装
- 域名系统DNS总结
- 剑指offer 50 把字符串转换成整数
- hiho一下 第173周 题目1 : A Game 【区间dp】
- 【20171025中】alert(1) to win 脚本渲染自建
- 转载安装theano后GPU配置的各种坑
- Linux基础
- opencv的二值化1( 用Otsu’s二值化,找到双峰阈值)