依赖于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)的更多相关文章

  1. 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 ...

  2. java常用加密和解密工具类EncryptUtil.java

    package cn.util; import java.io.UnsupportedEncodingException; import java.security.MessageDigest; im ...

  3. md5加密(3)---org.apache.commons.codec.digest.DigestUtils.md5Hex(input)

    import org.apache.commons.codec.digest.DigestUtils;String sig = DigestUtils.md5Hex("str")

  4. 我的Java开发学习之旅------>工具类:Java获取字符串和文件进行MD5值

    ps:这几天本人用百度云盘秒传了几部大片到云盘上,几个G的文件瞬秒竟然显示"上传成功"!这真让我目瞪口呆,要是这样的话,那得多快的网速,这绝对是不可能的,也许这仅是个假象.百度了一 ...

  5. 我的Java开发学习之旅------>工具类:Java使用正则表达式分离出字符串中的中文和英文

    今天看到一个工具类使用正则表达式将一大段字符串中的中文和英文都分离出来了,在此记录一下,读者可以收藏! import java.util.ArrayList; import java.util.Col ...

  6. java 调用apache.commons.codec的包简单实现MD5加密

    转自:https://blog.csdn.net/mmd1234520/article/details/70210002/ import java.security.MessageDigest; im ...

  7. 加密工具类 - CryptoUtils.java

    加密工具类,包含MD5,BASE64,SHA,CRC32的加密与解密方法. 源码如下:(点击下载  - CryptoUtils.java.commons-io-2.4.jar.commons-code ...

  8. (转)JAVA 十六个常用工具类

    一. org.apache.commons.io.IOUtils closeQuietly 关闭一个IO流.socket.或者selector且不抛出异常.通常放在finally块 toString ...

  9. 常用的16个Java实用工具类,Java开发人员请收藏!

    在Java中,实用程序类是一个定义一组执行常用功能的方法的类.这篇文章展示了最常用的Java实用程序类及其最常用的方法.类列表及其方法列表都按流行度排序.该数据基于GitHub随机选择的50,000个 ...

随机推荐

  1. Bzoj 1609: [Usaco2008 Feb]Eating Together麻烦的聚餐 二分

    1609: [Usaco2008 Feb]Eating Together麻烦的聚餐 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1272  Solve ...

  2. Linux程序设计(一)入门

    1. linux程序 Linux应用程序表现为两种特殊类型的文件:可执行文件和脚本文件. 可执行文件:是计算可以直接运行的程序,相当于windows的.exe文件. 脚本文件:一组指令的集合.这些指令 ...

  3. 使用js实现html锚功能,可以任意定位锚的位置,比锚更加灵活

    今天记录一个js功能,发现该功能很实用,拿出来跟大家分享. 这里我使用js的window.scrollTo()函数,该函数的用法给大家重复一下,语法为scrollTo(x,y),这里x表示在窗口文档显 ...

  4. UIBarButtonItem导航栏添加按钮

    1 前言 UIBarButtonItem为导航栏按钮,在导航栏的左侧和右侧,他们具有许多种不同的形状和形式. 2 代码讲解 ZYViewController.m [plain]  (void)view ...

  5. MVC-@html.ActionLink的几种参数格式

    一 Html.ActionLink("linkText","actionName") 该重载的第一个参数是该链接要显示的文字,第二个参数是对应的控制器的方法, ...

  6. 用nginx图片缓存服务器

    图片的存储硬件 把图片存储到什么介质上? 如果有足够的资金购买专用的图片服务器硬件或者 NAS 设备,那么简单的很: 如果上述条件不具备,只想在普通的硬盘上存储,首先还是要考虑一下物理硬盘的实际处理能 ...

  7. COCOS2D-X 精灵创建随笔

    CCSprite类中创建Sprite的方法都是静态的: static CCSprite* create ( )  创建一个无图片显示的精灵,可随后用 setTexture 方法设置显示图片 stati ...

  8. android 63 Fragment

    #Fragment 是3.0平板才引入进来的,3.0之后就加入了Fragment.原来是一个屏幕就是一个Activity,>片段,碎片 1. 定义某一个片段的界面 继承Fragment类 pub ...

  9. Qss All

    /* * OOMidi application style sheet */QFrame#transportToolButtons{border: 0;spacing: 0;margin: 0;pad ...

  10. hadoop错误ERROR namenode.NameNode (NameNode.javamain(1657)) - Failed to start namenode java.net.BindException:Port in use:host1:50070

    解决方法: 1.通过lsof -i:50070(lsof可以通过yum install lsof安装)查看,发现是mysql被占用了 2.修改mysql端口 从/usr/share/mysql/my- ...