java 加密工具包_加密工具类 - CryptoUtils.java

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

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);

}

}

}

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

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

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

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

Java AES 加密工具类

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

java MD5Utils 加密工具类

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

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加密工具类主要代码,供 ...

App开发流程之加密工具类

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

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

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

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

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

随机推荐

MS SQL 两种分页

------ row number ---------- ------ row number ---------- declare @pageSize int,@pageIndex int ; sel ...

Android Studio使用百度地图示例BaiduMapsApiASDemo

Android Studio使用百度地图示例BaiduMapsApiASDemo 用自己AVD下的debug.keystore替换掉项目中的debug.keystore 生成自己的签名 同样的方法生成 ...

wap上传图片跨域发送post请求

wap和接口交互是跨域请求,一般只能通过Jsonp来进行数据的吞吐,然而jsonp只是GET请求,不能发送post请求,所以会对项目需求有所限制. 需求:wap跨域通过接口上传图片. 条件:接口是C# ...

LabVIEW设计模式系列——case结构模拟事件结构

标准:1.所有按钮的机械动作必须都用释放时触发或者单击时触发,这是为了保证仅仅触发一次动作. 标准:1.使用简单的case结构模拟事件结构.

Android开发实现透明通知栏

这个特性是andorid4.4支持的,最少要api19才可以使用,也就是说如果Android的机子是低于4.4,沉浸通知栏是没有效果的.下面介绍一下使用的方法,非常得简单. public void i ...

selenium和pythond的区别

selenium和pythond的区别 天宇6169 | 浏览 137 次 2016-03-18 10:25 2016-03-18 12:24 最佳答案   selenium ide是用来录制的!大概 ...

HTTP 协议

HTTP 协议对应 Web 开发者来说都必须要了解的,无论技术背景或首选编程语言是什么,"请求-响应" 对话是驱动 Web 上通信的基础. HTTP 概述 HTTP 协议是 Hyp ...

SQLServer 创建服务器和数据库级别审计

概述 在上一篇文章中已经介绍了审计的概念:本篇文章主要介绍如何创建审计,以及该收集哪些审核规范. 一.常用的审核对象 1.1.服务器审核对象 1.FAILED_LOGIN_GROUP( Audit L ...

前端面试题总结二(js原型继承)

今天这篇文章整理了JS原型和继承的一些知识点,面试的时候  基!本!都!会!问!还不快认真阅读下文,看看你还有哪些知识点需要掌握吧~ 1.原型链 基本思想:利用原型让一个引用类型继承另外一个引用类型的 ...

[经验交流] 试用基于 influxdb+kapacitor 的监控系统

2017年10月16日: 使用中发现kapacitor的ui过于简单,不能满足实际工作需要,现已切换到grafana --------- 两个月前试用了基于 elasticsearch + xpack ...

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值