MD5算法工具类
抽时间写了一个算法工具类,目前支持的算法有SHA1,SHA256,SHA384,SHA512,MD5,同时支持获取文件的MD5值。
使用方法如下:
获取字符串的MD5值
String str= AlgorithmHelper.getHash("123", AlgorithmHelper.MD5)
获取字符串的SHA256值
String str= AlgorithmHelper.getHash("123", AlgorithmHelper.SHA256);
获取文件的MD5值
File file=new File(Environment.getExternalStorageDirectory().getAbsolutePath()+File.separator+"1.jpg");
String str=AlgorithmHelper.getMD5(file);
代码文件如下:
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.HashMap;
import java.util.Map; public class AlgorithmHelper { private final static Map<Integer, String> mapList = new HashMap<Integer, String>();
private final static char[] HEX_CHARS = "0123456789ABCDEF".toCharArray(); public final static int SHA1 = 0;
public final static int SHA256 = 1;
public final static int SHA384 = 2;
public final static int SHA512 = 3;
public final static int MD5 = 4; static {
mapList.put(SHA1, "SHA-1");
mapList.put(SHA256, "SHA-256");
mapList.put(SHA384, "SHA-384");
mapList.put(SHA512, "SHA-512");
mapList.put(MD5, "MD5");
} private static String convertToHex(byte[] bytes) {
char[] hexChars = new char[bytes.length * 2];
for (int j = 0; j < bytes.length; j++) {
int v = bytes[j] & 0xFF;
hexChars[j * 2] = HEX_CHARS[v >>> 4];
hexChars[j * 2 + 1] = HEX_CHARS[v & 0x0F];
}
return new String(hexChars);
} public static String getHash(String text, int algorithm) {
String hash = null;
try {
if (mapList.containsKey(algorithm)) {
final MessageDigest digest = MessageDigest.getInstance(mapList.get(algorithm));
final byte[] bytes = text.getBytes("UTF-8");
digest.update(bytes, 0, bytes.length);
hash = convertToHex(digest.digest());
}
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return hash;
} //获取字符串的MD5值
public static String getMD5(String text) {
return getHash(text, MD5);
} //获取文件的MD5值
public static String getMD5(File file) {
String hash = null;
if (file == null || !file.exists()) {
return hash;
} InputStream is = null;
try {
MessageDigest messageDigest = MessageDigest.getInstance("MD5");
is = new FileInputStream(file);
byte[] buffer = new byte[1024];
int len = -1;
while ((len = is.read(buffer)) != -1) {
messageDigest.update(buffer, 0, len);
}
byte[] bytes = messageDigest.digest();
hash = convertToHex(bytes);
} catch (Exception e) {
} finally {
if (is != null) {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return hash;
}
}
MD5算法工具类的更多相关文章
- MD5编码工具类 MD5Code.java
代码如下: package com.util; /** * MD5编码工具类 * http://www.cnblogs.com/sosoft/ */ public class MD5Code { st ...
- android开发MD5加密工具类(一)
MD5加密工具类整理: package com.gzcivil.utils; import java.io.UnsupportedEncodingException; import java.secu ...
- wemall app商城源码android开发MD5加密工具类
wemall-mobile是基于WeMall的android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改.本文分享android开发MD5加密工具类主要代码,供 ...
- java版MD5签名工具类
package com.net.util; import java.security.MessageDigest; /** * MD5签名工具类 * @author zhangdi * */ publ ...
- spring自带的MD5加密工具类
Spring 自带的md5加密工具类,本来打算自己找一个工具类的,后来想起来Spring有自带的,就翻了翻 //导入包import org.springframework.util.DigestUti ...
- Android初级教程:对文件和字符串进行MD5加密工具类
转载请注明出处:http://blog.csdn.net/qq_32059827/article/details/52200008 点击打开链接 之前写过一篇博文,是针对字符串进行md5加密的.今 ...
- java实现Md5加密工具类
场景:平常我们用户注册的密码保存到数据库都不会是明文存储的.都是经过加密之后的.因为保证用户的安全性.我们通常是用md5算法来加密的. 这个只能算是一个工具类.没必要了解里面是怎么实现的.拿来用就可以 ...
- AES算法工具类
什么是对称加密算法? AES已经变成目前对称加密中最流行算法之一:AES可以使用128.192.和256位密钥,并且用128位分组加密和解密数据. 对称加密算法安全吗? 看过间谍局的知友们一定知道电台 ...
- MD5加密算法工具类
import java.math.BigInteger; import java.security.MessageDigest; import java.security.NoSuchAlgorith ...
随机推荐
- Excel复制粘贴假死
把打印机都删除了试一下. 如果还有问题,就把迅雷监听关掉.
- bzoj 2726 任务安排(3)/loj 10184-10186 斜率优化
任务安排1 #include<bits/stdc++.h> #define int long long using namespace std; ; int n,s,t[N],c[N],f ...
- poj2559/hdu1506 单调栈经典题
我实在是太菜了啊啊啊啊啊 到现在连个单调栈都不会啊啊啊 写个经典题 #include<cstdio> #include<algorithm> #include<cstri ...
- C#水晶报表教程
http://apps.hi.baidu.com/share/detail/24298108 水晶报表是一个功能强大的报表工具,现在已经被Microsoft Visual Studio 2005(下文 ...
- Task Asnyc 异常问题
/// <summary> /// async 异常捕获问题 /// </summary> /// <param name="context"> ...
- PHP7语法知识(四):目录文件操作、Cookie与Session、MySQL数据库的使用、Redis数据库、PHP处理XML与JSON
目录文件操作 一.目录 1.判断文件类型: 2.创建和删除目录: 3.打开读取和关闭目录 4.获得路径中目录部分 5.目录磁盘空间 二.文件操作 1.打开文件: 2.读取文件: 3.获得文件属性: 4 ...
- mui列表系列
详细操作见代码: <!doctype html> <html> <head> <meta charset="UTF-8"> < ...
- spring boot 与 spring cloud 关系
公司使用spring cloud,所以稍微了解一下 看了一下spring官网对 spring boot 以及 spring cloud 的解释 Spring Boot Spring Boot make ...
- gulp3 和 gulp4 区别
运行gulp项目报错:AssertionError: Task function must be specified 今天像往常一样,编写文章,并使用gulp bulid压缩代码,但是一运行:gulp ...
- pythonのscrapy抓取网站数据
(1)安装Scrapy环境 步骤请参考:https://blog.csdn.net/c406495762/article/details/60156205 需要注意的是,安装的时候需要根据自己的pyt ...