password、文件MD5加密,passwordsha256、sha384、sha512Hex等加密
package encryption;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.util.Arrays; import org.apache.commons.codec.binary.Base64OutputStream;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.codec.digest.MessageDigestAlgorithms; import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
/**
* 加密工具类
* @author wangzg
* @Date 2014-7-25
* @Need commons-codec-*.*.jar
*/
public class Encryption { /**
* @Title: main
* @Description:
* @param:
* @return void
* @user: wangzg
* @Date:2014-7-25
* @throws
*/
public static void main(String[] args) {
String strSource = "admin"; String str = getMd5(strSource);
System.out.println(strSource+",length:"+str.length()+",md5:"+str);
str = getSha1(strSource);
System.out.println(strSource+",length:"+str.length()+",Sha1:"+str);
str = getSha256(strSource);
System.out.println(strSource+",length:"+str.length()+",Sha256:"+str);
str = getSha384(strSource);
System.out.println(strSource+",length:"+str.length()+",Sha384:"+str);
str = getSha512(strSource);
System.out.println(strSource+",length:"+str.length()+",Sha512:"+str); digestFile("doc\\1.txt",MessageDigestAlgorithms.MD5); String target = getBase64(strSource);
System.out.println(strSource);
System.out.println(target);
System.out.println(getFromBase64(target)); } /**
* MD5加密,返回32位十六进制字符串
* @Title: getMD5
* @Description:
* @param:
* @return String
* @user: wangzg
* @Date:2014-7-25
* @throws
*/
public static String getMd5(String source){
return DigestUtils.md5Hex(source);
} /**
* sha1加密,返回40位十六进制字符串
* @Title: getSha1
* @Description:
* @param:
* @return String
* @user: wangzg
* @Date:2014-7-25
* @throws
*/
public static String getSha1(String source){
return DigestUtils.sha1Hex(source);
} /**
* sha256加密,返回64位十六进制字符串
* @Title: getSha256
* @Description:
* @param:
* @return String
* @user: wangzg
* @Date:2014-7-25
* @throws
*/
public static String getSha256(String source){
return DigestUtils.sha256Hex(source);
} /**
* sha384加密,返回96位十六进制字符串
* @Title: getSha384
* @Description:
* @param:
* @return String
* @user: wangzg
* @Date:2014-7-25
* @throws
*/
public static String getSha384(String source){
return DigestUtils.sha384Hex(source);
} /**
* sha512加密,返回128位十六进制字符串
* @Title: getSha512
* @Description:
* @param:
* @return String
* @user: wangzg
* @Date:2014-7-25
* @throws
*/
public static String getSha512(String source){
return DigestUtils.sha512Hex(source);
} /**
* 文件加密
* @Title: digestFile
* @Description:
* @param:filename:加密文件,algorithm:加密算法
* @return void
* @user: wangzg
* @Date:2014-7-25
* @throws
*/
public static void digestFile(String filename, String algorithm) {
byte[] b = new byte[1024 * 4];
int len = 0;
FileInputStream fis = null;
FileOutputStream fos = null;
try {
MessageDigest md = MessageDigest.getInstance(algorithm);
fis = new FileInputStream(filename);
while ((len = fis.read(b)) != -1) {
md.update(b, 0, len);
}
byte[] digest = md.digest();
//System.out.println(Arrays.toString(digest));
StringBuffer fileNameBuffer = new StringBuffer(128).append(filename).append(".").append(algorithm);
fos = new FileOutputStream(fileNameBuffer.toString());
OutputStream encodedStream = new Base64OutputStream(fos);
encodedStream.write(digest);
encodedStream.flush();
encodedStream.close();
} catch (Exception e) {
System.out.println("Error computing Digest: " + e);
} finally {
try {
if (fis != null)
fis.close();
if (fos != null)
fos.close();
} catch (Exception ignored) {
}
}
} /**
* Base64加密
* @Title: getBase64
* @Description:
* @param:
* @return String
* @user: wangzg
* @Date:2014-7-25
* @throws
*/
public static String getBase64(String str) {
byte[] b = null;
String s = null;
try {
b = str.getBytes("utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
if (b != null) {
s = new BASE64Encoder().encode(b);
}
return s;
} /**
* Base64解密
* @Title: getFromBase64
* @Description:
* @param:
* @return String
* @user: wangzg
* @Date:2014-7-25
* @throws
*/
public static String getFromBase64(String s) {
byte[] b = null;
String result = null;
if (s != null) {
BASE64Decoder decoder = new BASE64Decoder();
try {
b = decoder.decodeBuffer(s);
result = new String(b, "utf-8");
} catch (Exception e) {
e.printStackTrace();
}
}
return result;
} }
password、文件MD5加密,passwordsha256、sha384、sha512Hex等加密的更多相关文章
- 使用apache htpasswd生成加密的password文件,并使用.htaccess控制文件夹訪问
htpasswd 是apache的小工具.在apache安装文件夹bin下可找到. Usage: htpasswd [-cmdpsD] passwordfile username htpasswd - ...
- MD5工具类,提供字符串MD5加密、文件MD5值获取(校验)功能
MD5工具类,提供字符串MD5加密(校验).文件MD5值获取(校验)功能 : package com.yzu.utils; import java.io.File; import java.io.Fi ...
- 使用crypto模块实现md5加密功能(解决中文加密前后端不一致的问题)
正常情况下使用md5加密 var crypto = require('crypto'); var md5Sign = function (data) { var md5 = crypto.create ...
- C# 计算文件MD5
因工作需要对文件进行是否被修改判断,整理的一段生成文件MD5码的代码: 1: public class FileHelper 2: { 3: /// <summary> 4: /// 对文 ...
- C#获取文件MD5字符串
备注 哈希函数将任意长度的二进制字符串映射为固定长度的小型二进制字符串.加密哈希函数有这样一个属性:在计算不大可能找到散列为相同的值的两个不同的输入:也就是说,两组数据的哈希值仅在对应的数据也匹配时才 ...
- (转)DES、RSA、MD5、SHA、随机生成加密与解密
一.数据加密/编码算法列表 常见用于保证安全的加密或编码算法如下: 1.常用密钥算法 密钥算法用来对敏感数据.摘要.签名等信息进行加密,常用的密钥算法包括: DES(Data Encr ...
- 利用openssl进行BASE64编码解码、md5/sha1摘要、AES/DES3加密解密
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...
- ashx实现文件下载以及文件MD5码测试
cs using System; using System.Collections.Generic; using System.Linq; using System.Web; using System ...
- Java 获取 文件md5校验码
讯雷下载的核心思想是校验文件的md5值,两个文件若md5相同则为同一文件. 当得到用户下载某个文件的请求后它根据数据库中保留的文件md5比对出拥有此文件的url, 将用户请求挂接到此url上并仿造一个 ...
- JAVA中获取文件MD5值的四种方法
JAVA中获取文件MD5值的四种方法其实都很类似,因为核心都是通过JAVA自带的MessageDigest类来实现.获取文件MD5值主要分为三个步骤,第一步获取文件的byte信息,第二步通过Messa ...
随机推荐
- whiledo循环输出数组中的分数
var scores = [24, 32, 17]; var arrayLength = scores.length; var i =0; while(i < arrayLength){ var ...
- .net的架构模式
一:ADO.NET实现三层架构 不用三层的普通的查询写法: string sql = string.Format("select * from Studnet where StuName l ...
- 多版本并发控制(MVCC)
可以认为MVCC是行级锁的一个变种,但是它在很多情况下避免了加锁操作,因此开销更低. 虽然实现机制有所不同,但大都实现了非阻塞的读操作,写操作也只锁定必要的行. MVCC的实现是通过保存数据在某个时间 ...
- mongo3.x配置说明
Mongodb 3.x配置说明,本文内容忽略了Enterprise版和一些不常用的配置. 一.配置说明 在Mongod安装包中,包含2个进程启动文件:mongod和mongos:其中mongd是核心基 ...
- BZOJP1899ZJOI2004
老早的一道水题 题意: 上午的训练结束了,THU ACM小组集体去吃午餐,他们一行N人来到了著名的十食堂.这里有两个打饭的窗口,每个窗口同一时刻只能给一个人打饭.由于每个人的口味(以及胃口)不同,所以 ...
- [转]svn检出的时候报 Unable to connect to a repository at URL错误
昨天晚上遇到的问题: 在同一个SVN地址下,很多子目录,各种目录各种权限,现在因为业务,需要下载各种目录下的文件. 第一次遇到这个问题..现象是: 1)在web浏览器下可用: 2)在本地创建的目录下c ...
- python小知识-__call__和类装饰器的结合使用,数据描述符__get__\__set__\__delete__(描述符类是Python中一种用于储存类属性值的对象)
class Decorator(): def __init__(self, f): print('run in init......') self.f = f def __call__(self, a ...
- golang实现分布式缓存笔记(一)基于http的缓存服务
目录 前言 cache 缓存服务接口 cache包实现 golang http包使用介绍 hello.go Redirect.go http-cache-server 实现 cacheHandler ...
- 条件随机场之CRF++源码详解-开篇
介绍 最近在用条件随机场做切分标注相关的工作,系统学习了下条件随机场模型.能够理解推导过程,但还是比较抽象.因此想研究下模型实现的具体过程,比如:1) 状态特征和转移特征具体是什么以及如何构造 2)前 ...
- Flask使用SQLAlchemy两种方式
一.SQLAlchemy和Alembic 主要使用原生的SQLAlchemy进行数据库操作和使用Alemic进行数据库版本控制 I 创建数据库主要有三个步骤 创建表的父类/数据库连接/Session ...