Java之加密(信息摘要)工具类(依赖:java.security.MessageDigest或org.apache.commons.codec.digest.DigestUtils)
依赖于java.security.MessageDigest,支持MD5,SHA-1,SHA-256
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException; /**
* CiphertextUtil
*
* @author ysj
*/
public class CiphertextUtil {
public static final String MD5 = "MD5";
public static final String SHA_1 = "SHA-1";
public static final String SHA_256 = "SHA-256";
private static final char[] CH_HEX = {'0', '1', '2', '3', '4', '5', '6', '7', '8',
'9', 'A', 'B', 'C', 'D', 'E', 'F'}; /**
* 加密字符串
*
* @param sourceStr 需要加密目标字符串
* @param algorithmsName 算法名称(如:MD5,SHA-1,SHA-256)
* @return
*/
public static String passAlgorithmsCiphering(String sourceStr,String algorithmsName){
String password = "";
MessageDigest md;
try {
md = MessageDigest.getInstance(algorithmsName);
// 使用指定byte[]更新摘要
md.update(sourceStr.getBytes());
// 完成计算,返回结果数组
byte[] b = md.digest();
password = byteArrayToHex(b);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return password;
} /**
* 将字节数组转为十六进制字符串
*
* @param bytes
* @return 返回16进制字符串
*/
private static String byteArrayToHex(byte[] bytes) {
// 一个字节占8位,一个十六进制字符占4位;十六进制字符数组的长度为字节数组长度的两倍
char[] chars = new char[bytes.length * 2];
int index = 0;
for (byte b : bytes) {
// 取字节的高4位
chars[index++] = CH_HEX[b >>> 4 & 0xf];
// 取字节的低4位
chars[index++] = CH_HEX[b & 0xf];
}
return new String(chars);
}
}
依赖于org.apache.commons.codec.digest.DigestUtils,支持MD2,MD5,SHA-1,SHA-256,SHA-384,SHA-512
Apache下载地址:http://commons.apache.org/proper/commons-codec/download_codec.cgi
import org.apache.commons.codec.digest.DigestUtils; /**
* CiphertextUtil
*
* @author ysj
*/
public class CiphertextUtil {
public static final String MD2 = "MD2";
public static final String MD5 = "MD5";
public static final String SHA_1 = "SHA1";
public static final String SHA_256 = "SHA256";
public static final String SHA_384 = "SHA384";
public static final String SHA_512 = "SHA512"; /**
* 加密字符串
*
* @param sourceStr 需要加密目标字符串
* @param algorithmsName 算法名称(如:MD2,MD5,SHA1,SHA256,SHA384,SHA512)
* @return
*/
public static String passAlgorithmsCiphering(String sourceStr,String algorithmsName){
String password = "";
switch(algorithmsName){
case "MD2":
password = DigestUtils.md2Hex(sourceStr);
break;
case "MD5":
password = DigestUtils.md5Hex(sourceStr);
break;
case "SHA1":
password = DigestUtils.sha1Hex(sourceStr);
break;
case "SHA256":
password = DigestUtils.sha256Hex(sourceStr);
break;
case "SHA384":
password = DigestUtils.sha384Hex(sourceStr);
break;
case "SHA512":
password = DigestUtils.sha512Hex(sourceStr);
break;
}
return password;
}
}
Java之加密(信息摘要)工具类(依赖:java.security.MessageDigest或org.apache.commons.codec.digest.DigestUtils)的更多相关文章
- Handler processing failed; nested exception is java.lang.NoSuchMethodError: org.apache.commons.codec.digest.DigestUtils.sha1Hex(Ljava/lang/String;)Ljava/lang/String;
异常:Handler processing failed; nested exception is java.lang.NoSuchMethodError: org.apache.commons.co ...
- java常用加密和解密工具类EncryptUtil.java
package cn.util; import java.io.UnsupportedEncodingException; import java.security.MessageDigest; im ...
- md5加密(3)---org.apache.commons.codec.digest.DigestUtils.md5Hex(input)
import org.apache.commons.codec.digest.DigestUtils;String sig = DigestUtils.md5Hex("str")
- 我的Java开发学习之旅------>工具类:Java获取字符串和文件进行MD5值
ps:这几天本人用百度云盘秒传了几部大片到云盘上,几个G的文件瞬秒竟然显示"上传成功"!这真让我目瞪口呆,要是这样的话,那得多快的网速,这绝对是不可能的,也许这仅是个假象.百度了一 ...
- 我的Java开发学习之旅------>工具类:Java使用正则表达式分离出字符串中的中文和英文
今天看到一个工具类使用正则表达式将一大段字符串中的中文和英文都分离出来了,在此记录一下,读者可以收藏! import java.util.ArrayList; import java.util.Col ...
- java 调用apache.commons.codec的包简单实现MD5加密
转自:https://blog.csdn.net/mmd1234520/article/details/70210002/ import java.security.MessageDigest; im ...
- 加密工具类 - CryptoUtils.java
加密工具类,包含MD5,BASE64,SHA,CRC32的加密与解密方法. 源码如下:(点击下载 - CryptoUtils.java.commons-io-2.4.jar.commons-code ...
- (转)JAVA 十六个常用工具类
一. org.apache.commons.io.IOUtils closeQuietly 关闭一个IO流.socket.或者selector且不抛出异常.通常放在finally块 toString ...
- 常用的16个Java实用工具类,Java开发人员请收藏!
在Java中,实用程序类是一个定义一组执行常用功能的方法的类.这篇文章展示了最常用的Java实用程序类及其最常用的方法.类列表及其方法列表都按流行度排序.该数据基于GitHub随机选择的50,000个 ...
随机推荐
- Bzoj 2346: [Baltic 2011]Lamp dijkstra,堆
2346: [Baltic 2011]Lamp Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 428 Solved: 179[Submit][Sta ...
- [SAM4N学习笔记]按键程序(中断方式)
一.准备工作: 将上一节搭建的工程复制一份,命名为"6.key interrupt".这一节主要讲如何使用SAM4N的GPIO中断功能,实现按键的中断输入. 二.程序编写 ...
- atomic_t原子操作
所谓原子操作,就是该操作绝不会在执行完毕前被任何其他任务或事件打断,也就说,它的最小的执行单位,不可能有比它更小的执行单位,因此这里的原子实际是使用了物理学里的物质微粒的概念. 原子操作需要硬件的支持 ...
- 筛1-n中每个数的因子(nlogn)
void get_div() //筛因子 { ; i<maxn; i++) for(int j=i; j<maxn; j+=i) dx[j].push_back(i); }
- 缓存算法–LRU
LRU LRU是Least Recently Used 的缩写,翻译过来就是“最近最少使用”,也就是说,LRU缓存把最近最少使用的数据移除,让给最新读取的数据.而往往最常读取的,也是读取次数最多的,所 ...
- Spark RDD/Core 编程 API入门系列 之rdd实战(rdd基本操作实战及transformation和action流程图)(源码)(三)
本博文的主要内容是: 1.rdd基本操作实战 2.transformation和action流程图 3.典型的transformation和action RDD有3种操作: 1. Trandform ...
- MongoDB:The Definitive Guide CHAPTER 1 Introduction
MongoDB is a powerful, flexible, and scalable data store. It combines the ability to scale out with ...
- oracle 语句优化
1. 选用适合的ORACLE优化器 ORACLE的优化器共有3种: a. RULE (基于规则) b. COST (基于成本) c. CHOOSE (选择性) 设置缺省的优化器,可 ...
- 【bzoj3172】 [Tjoi2013]单词
题目描述 某人读论文,一篇论文是由许多单词组成.但他发现一个单词会在论文中出现很多次,现在想知道每个单词分别在论文中出现多少次. 输入 第一个一个整数N,表示有多少个单词,接下来N行每行一个单词.每个 ...
- 转 python 之 分割参数getopt
python 之 分割参数getopt os下有个方法walk,非常的好用,用来生成一个generator.每次可以得到一个三元tupple,其中第一个为起始路径,第二个为起始路径下的文件夹,第三个是 ...