依赖于java.security.MessageDigest,支持MD5,SHA-1,SHA-256

  1. import java.security.MessageDigest;
  2. import java.security.NoSuchAlgorithmException;
  3.  
  4. /**
  5. * CiphertextUtil
  6. *
  7. * @author ysj
  8. */
  9. public class CiphertextUtil {
  10. public static final String MD5 = "MD5";
  11. public static final String SHA_1 = "SHA-1";
  12. public static final String SHA_256 = "SHA-256";
  13. private static final char[] CH_HEX = {'0', '1', '2', '3', '4', '5', '6', '7', '8',
  14. '9', 'A', 'B', 'C', 'D', 'E', 'F'};
  15.  
  16. /**
  17. * 加密字符串
  18. *
  19. * @param sourceStr 需要加密目标字符串
  20. * @param algorithmsName 算法名称(如:MD5,SHA-1,SHA-256)
  21. * @return
  22. */
  23. public static String passAlgorithmsCiphering(String sourceStr,String algorithmsName){
  24. String password = "";
  25. MessageDigest md;
  26. try {
  27. md = MessageDigest.getInstance(algorithmsName);
  28. // 使用指定byte[]更新摘要
  29. md.update(sourceStr.getBytes());
  30. // 完成计算,返回结果数组
  31. byte[] b = md.digest();
  32. password = byteArrayToHex(b);
  33. } catch (NoSuchAlgorithmException e) {
  34. e.printStackTrace();
  35. }
  36. return password;
  37. }
  38.  
  39. /**
  40. * 将字节数组转为十六进制字符串
  41. *
  42. * @param bytes
  43. * @return 返回16进制字符串
  44. */
  45. private static String byteArrayToHex(byte[] bytes) {
  46. // 一个字节占8位,一个十六进制字符占4位;十六进制字符数组的长度为字节数组长度的两倍
  47. char[] chars = new char[bytes.length * 2];
  48. int index = 0;
  49. for (byte b : bytes) {
  50. // 取字节的高4位
  51. chars[index++] = CH_HEX[b >>> 4 & 0xf];
  52. // 取字节的低4位
  53. chars[index++] = CH_HEX[b & 0xf];
  54. }
  55. return new String(chars);
  56. }
  57. }

依赖于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

  1. import org.apache.commons.codec.digest.DigestUtils;
  2.  
  3. /**
  4. * CiphertextUtil
  5. *
  6. * @author ysj
  7. */
  8. public class CiphertextUtil {
  9. public static final String MD2 = "MD2";
  10. public static final String MD5 = "MD5";
  11. public static final String SHA_1 = "SHA1";
  12. public static final String SHA_256 = "SHA256";
  13. public static final String SHA_384 = "SHA384";
  14. public static final String SHA_512 = "SHA512";
  15.  
  16. /**
  17. * 加密字符串
  18. *
  19. * @param sourceStr 需要加密目标字符串
  20. * @param algorithmsName 算法名称(如:MD2,MD5,SHA1,SHA256,SHA384,SHA512)
  21. * @return
  22. */
  23. public static String passAlgorithmsCiphering(String sourceStr,String algorithmsName){
  24. String password = "";
  25. switch(algorithmsName){
  26. case "MD2":
  27. password = DigestUtils.md2Hex(sourceStr);
  28. break;
  29. case "MD5":
  30. password = DigestUtils.md5Hex(sourceStr);
  31. break;
  32. case "SHA1":
  33. password = DigestUtils.sha1Hex(sourceStr);
  34. break;
  35. case "SHA256":
  36. password = DigestUtils.sha256Hex(sourceStr);
  37. break;
  38. case "SHA384":
  39. password = DigestUtils.sha384Hex(sourceStr);
  40. break;
  41. case "SHA512":
  42. password = DigestUtils.sha512Hex(sourceStr);
  43. break;
  44. }
  45. return password;
  46. }
  47. }

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. Branch management

    Branch management */--> pre { background-color: #2f4f4f;line-height: 1.6; FONT: 10.5pt Consola,&q ...

  2. 解析Qt4.7.3编译MySql数据库驱动,存中文乱码、过滤转义字符问题

    问题:使用QSqlDataBase类建立连接MySql数据库驱动加载失败 QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available ...

  3. 排列组合函数next_permutation()

    next_permution(),按照字典序进行排列组合, 括号里的参数为类似sort里面的参数,用法相同 #include <bits/stdc++.h> using namespace ...

  4. php获取机器网卡的物理(MAC)地址

    <?php /** 获取网卡的MAC地址原码:目前支持WIN/LINUX系统 获取机器网卡的物理(MAC)地址 **/ class GetMacAddr{ var $return_array = ...

  5. Android中应用程序如何获得系统签名权限

    有些库的使用条件比较苛刻,要求同一签名的程序才可以获得访问权.此时即便是在AndroidManifest.xml中添加了相应的permission,依旧会得到没有xx访问权限的问题.比如android ...

  6. mongodb 学习笔记 09 -- shard分片

    概述 shard 分片 就是 把不同的数据分在不同的server 模型 当中:     用户对mongodb的操作都是向mongs请求的     configsvr 用于保存,某条数据保存在哪个sha ...

  7. java多线程之消费者生产者模式 (转)

    /*@author shijin * 生产者与消费者模型中,要保证以下几点: * 1 同一时间内只能有一个生产者生产 生产方法加锁sychronized * 2 同一时间内只能有一个消费者消费 消费方 ...

  8. oracle5

    oracle中事务处理 什么是事务 事务用于保证数据的一致性,它由一组相关的dml语句组成,该组的dml(数据操作语言:增删改,没有查询)语句要么全部成功,要么全部失败. 如:网上转账就是典型的要用事 ...

  9. Linux 性能优化之 IO 子系统 系列 图

    http://blog.sina.com.cn/s/articlelist_1029388674_11_1.html Linux 性能优化之 IO 子系统(一) 本文介绍了对 Linux IO 子系统 ...

  10. LPC2378-Jlink 能下载程序,但是调试出现各种奇怪问题

    LPC2378-Jlink调试经验 1.Jlink(d版的没有关系)不能下载程序?     把下载速率设置到500Khz及以下的速率. 2.Jlink能在500Khz的速率下载程序,但是不能调试?添加 ...