加密工具类,包含MD5,BASE64,SHA,CRC32的加密与解密方法。

源码如下:(点击下载  - CryptoUtils.javacommons-io-2.4.jarcommons-codec-1.9.jar )

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.URL;
import java.util.zip.CRC32;
import java.util.zip.CheckedInputStream;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.io.IOUtils; /**
* 加密工具类,包含MD5,BASE64,SHA,CRC32
*
*/
public class CryptoUtils { private static final String DEFAULT_CHARSET = "UTF-8"; /**
* MD5加密
*
* @param bytes
* an array of byte.
* @return a {@link java.lang.String} object.
*/
public static String encodeMD5(final byte[] bytes) {
return DigestUtils.md5Hex(bytes);
} /**
* MD5加密,默认UTF-8
*
* @param str
* a {@link java.lang.String} object.
* @return a {@link java.lang.String} object.
*/
public static String encodeMD5(final String str) {
return encodeMD5(str, DEFAULT_CHARSET);
} /**
* MD5加密
*
* @param str
* a {@link java.lang.String} object.
* @param charset
* a {@link java.lang.String} object.
* @return a {@link java.lang.String} object.
*/
public static String encodeMD5(final String str, final String charset) {
if (str == null) {
return null;
}
try {
byte[] bytes = str.getBytes(charset);
return encodeMD5(bytes);
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
} /**
* SHA加密
*
* @param bytes
* an array of byte.
* @return a {@link java.lang.String} object.
*/
public static String encodeSHA(final byte[] bytes) {
return DigestUtils.sha512Hex(bytes);
} /**
* SHA加密
*
* @param str
* a {@link java.lang.String} object.
* @param charset
* a {@link java.lang.String} object.
* @return a {@link java.lang.String} object.
*/
public static String encodeSHA(final String str, final String charset) {
if (str == null) {
return null;
}
try {
byte[] bytes = str.getBytes(charset);
return encodeSHA(bytes);
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
} /**
* SHA加密,默认utf-8
*
* @param str
* a {@link java.lang.String} object.
* @return a {@link java.lang.String} object.
*/
public static String encodeSHA(final String str) {
return encodeSHA(str, DEFAULT_CHARSET);
} /**
* BASE64加密
*
* @param bytes
* an array of byte.
* @return a {@link java.lang.String} object.
*/
public static String encodeBASE64(final byte[] bytes) {
return new String(Base64.encodeBase64String(bytes));
} /**
* BASE64加密
*
* @param str
* a {@link java.lang.String} object.
* @param charset
* a {@link java.lang.String} object.
* @return a {@link java.lang.String} object.
*/
public static String encodeBASE64(final String str, String charset) {
if (str == null) {
return null;
}
try {
byte[] bytes = str.getBytes(charset);
return encodeBASE64(bytes);
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
} /**
* BASE64加密,默认UTF-8
*
* @param str
* a {@link java.lang.String} object.
* @return a {@link java.lang.String} object.
*/
public static String encodeBASE64(final String str) {
return encodeBASE64(str, DEFAULT_CHARSET);
} /**
* BASE64解密,默认UTF-8
*
* @param str
* a {@link java.lang.String} object.
* @return a {@link java.lang.String} object.
*/
public static String decodeBASE64(String str) {
return decodeBASE64(str, DEFAULT_CHARSET);
} /**
* BASE64解密
*
* @param str
* a {@link java.lang.String} object.
* @param charset
* 字符编码
* @return a {@link java.lang.String} object.
*/
public static String decodeBASE64(String str, String charset) {
try {
byte[] bytes = str.getBytes(charset);
return new String(Base64.decodeBase64(bytes));
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
} /**
* CRC32字节校验
*
* @param bytes
* an array of byte.
* @return a {@link java.lang.String} object.
*/
public static String crc32(byte[] bytes) {
CRC32 crc32 = new CRC32();
crc32.update(bytes);
return Long.toHexString(crc32.getValue());
} /**
* CRC32字符串校验
*
* @param str
* a {@link java.lang.String} object.
* @param charset
* a {@link java.lang.String} object.
* @return a {@link java.lang.String} object.
*/
public static String crc32(final String str, String charset) {
try {
byte[] bytes = str.getBytes(charset);
return crc32(bytes);
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
} /**
* CRC32字符串校验,默认UTF-8编码读取
*
* @param str
* a {@link java.lang.String} object.
* @return a {@link java.lang.String} object.
*/
public static String crc32(final String str) {
return crc32(str, DEFAULT_CHARSET);
} /**
* CRC32流校验
*
* @param input
* a {@link java.io.InputStream} object.
* @return a {@link java.lang.String} object.
*/
public static String crc32(InputStream input) {
CRC32 crc32 = new CRC32();
CheckedInputStream checkInputStream = null;
int test = 0;
try {
checkInputStream = new CheckedInputStream(input, crc32);
do {
test = checkInputStream.read();
} while (test != -1);
return Long.toHexString(crc32.getValue());
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
} /**
* CRC32文件唯一校验
*
* @param file
* a {@link java.io.File} object.
* @return a {@link java.lang.String} object.
*/
public static String crc32(File file) {
InputStream input = null;
try {
input = new BufferedInputStream(new FileInputStream(file));
return crc32(input);
} catch (FileNotFoundException e) {
e.printStackTrace();
throw new RuntimeException(e);
} finally {
IOUtils.closeQuietly(input);
}
} /**
* CRC32文件唯一校验
*
* @param url
* a {@link java.net.URL} object.
* @return a {@link java.lang.String} object.
*/
public static String crc32(URL url) {
InputStream input = null;
try {
input = url.openStream();
return crc32(input);
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException(e);
} finally {
IOUtils.closeQuietly(input);
}
}
}

加密工具类 - CryptoUtils.java的更多相关文章

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

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

  2. java 加密工具类(MD5、RSA、AES等加密方式)

    1.加密工具类encryption MD5加密 import org.apache.commons.codec.digest.DigestUtils; /** * MD5加密组件 * * @autho ...

  3. Java AES 加密工具类

    package com.microwisdom.utils; import java.security.NoSuchAlgorithmException; import java.security.S ...

  4. java MD5Utils 加密工具类

    package com.sicdt.library.core.utils; import java.io.File; import java.io.FileInputStream; import ja ...

  5. android开发MD5加密工具类(一)

    MD5加密工具类整理: package com.gzcivil.utils; import java.io.UnsupportedEncodingException; import java.secu ...

  6. wemall app商城源码android开发MD5加密工具类

    wemall-mobile是基于WeMall的android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改.本文分享android开发MD5加密工具类主要代码,供 ...

  7. App开发流程之加密工具类

    科技优家 2016-09-08 18:10 从这篇记录开始,记录的都算是干货了,都是一些编程日常的积累. 我建议先将基础的工具加入项目,后续的开发效率会呈指数增长.如果在专注功能开发过程中,才发现缺少 ...

  8. Java日期工具类,Java时间工具类,Java时间格式化

    Java日期工具类,Java时间工具类,Java时间格式化 >>>>>>>>>>>>>>>>>&g ...

  9. Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类

    Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类 ============================== ©Copyright 蕃薯耀 20 ...

随机推荐

  1. poj 2987 Firing 最大权闭合图

    题目链接:http://poj.org/problem?id=2987 You’ve finally got mad at “the world’s most stupid” employees of ...

  2. 【BZOJ】【4027】【HEOI2015】兔子与樱花

    贪心 树上贪心问题……跟APIO2015练习赛的C很像啊…… 我的思路是:从叶子向上考虑,令a[x]表示x这个节点上樱花数量与儿子个数的和(即对于任意的x,都有$a[x]\leq m$)每次从儿子的a ...

  3. 【BZOJ】【1021】【SHOI2008】Dept循环的债务

    DP 去膜拜题解了>_>玛雅原来是动规…… 让我先理解一下为什么要用动规:这个题根据钱数推方案其实是无从下手的……(线性规划?……事实证明我想多了) 啦-我们先来看个超级简化版的问题:怎么 ...

  4. 2014ACM/ICPC亚洲区牡丹江站 浙大命题

    A  Average Score http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5373 a班有n个人,b班有m个人,bob在a ...

  5. .NET设计模式(7):创建型模式专题总结(Creational Pattern)(转)

    概述 创建型模式,就是用来创建对象的模式,抽象了实例化的过程.它帮助一个系统独立于如何创建.组合和表示它的那些对象.本文对五种常用创建型模式进行了比较,通过一个游戏开发场景的例子来说该如何使用创建型模 ...

  6. Linux常用命令大全(转载)

    系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS ...

  7. HDU-2604_Queuing

    题目:Problem Description Queues and Priority Queues are data structures which are known to most comput ...

  8. ipa上传到APP store

    原地址:http://blog.csdn.net/akun1103/article/details/8632651 在itunes中创建程序 该部分内容继续以雪豹系统为例 打开https://itun ...

  9. POC

    大概就是原型验证的意思 验证概念 编辑 概念验证(Proof of concept,简称POC)是对某些想法的一个不完整的实现,以证明其可行性,示范其原理,其目的是为了验证一些概念或理论.在计算机安全 ...

  10. 查看w3wp进程占用的内存及.NET内存泄露,死锁分析--转载

    一 基础知识 在分析之前,先上一张图: 从上面可以看到,这个w3wp进程占用了376M内存,启动了54个线程. 在使用windbg查看之前,看到的进程含有 *32 字样,意思是在64位机器上已32位方 ...