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等加密的更多相关文章

  1. 使用apache htpasswd生成加密的password文件,并使用.htaccess控制文件夹訪问

    htpasswd 是apache的小工具.在apache安装文件夹bin下可找到. Usage: htpasswd [-cmdpsD] passwordfile username htpasswd - ...

  2. MD5工具类,提供字符串MD5加密、文件MD5值获取(校验)功能

    MD5工具类,提供字符串MD5加密(校验).文件MD5值获取(校验)功能 : package com.yzu.utils; import java.io.File; import java.io.Fi ...

  3. 使用crypto模块实现md5加密功能(解决中文加密前后端不一致的问题)

    正常情况下使用md5加密 var crypto = require('crypto'); var md5Sign = function (data) { var md5 = crypto.create ...

  4. C# 计算文件MD5

    因工作需要对文件进行是否被修改判断,整理的一段生成文件MD5码的代码: 1: public class FileHelper 2: { 3: /// <summary> 4: /// 对文 ...

  5. C#获取文件MD5字符串

    备注 哈希函数将任意长度的二进制字符串映射为固定长度的小型二进制字符串.加密哈希函数有这样一个属性:在计算不大可能找到散列为相同的值的两个不同的输入:也就是说,两组数据的哈希值仅在对应的数据也匹配时才 ...

  6. (转)DES、RSA、MD5、SHA、随机生成加密与解密

    一.数据加密/编码算法列表   常见用于保证安全的加密或编码算法如下:   1.常用密钥算法   密钥算法用来对敏感数据.摘要.签名等信息进行加密,常用的密钥算法包括:   DES(Data Encr ...

  7. 利用openssl进行BASE64编码解码、md5/sha1摘要、AES/DES3加密解密

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  8. ashx实现文件下载以及文件MD5码测试

    cs using System; using System.Collections.Generic; using System.Linq; using System.Web; using System ...

  9. Java 获取 文件md5校验码

    讯雷下载的核心思想是校验文件的md5值,两个文件若md5相同则为同一文件. 当得到用户下载某个文件的请求后它根据数据库中保留的文件md5比对出拥有此文件的url, 将用户请求挂接到此url上并仿造一个 ...

  10. JAVA中获取文件MD5值的四种方法

    JAVA中获取文件MD5值的四种方法其实都很类似,因为核心都是通过JAVA自带的MessageDigest类来实现.获取文件MD5值主要分为三个步骤,第一步获取文件的byte信息,第二步通过Messa ...

随机推荐

  1. python 全栈开发,Day47(行级块级标签,高级选择器,属性选择器,伪类选择器,伪元素选择器,css的继承性和层叠性,层叠性权重相同处理,盒模型,padding,border,margin)

    一.HTML中的行级标签和块级标签 块级标签 常见的块级标签:div,p,h1-h6,ul,li,dl,dt,dd 1.独占一行,不和其他元素待在同一行2.能设置宽高3.如果不设置宽高,默认为body ...

  2. 【APUE | 08】进程控制

    函数fork 博文链接: 1. 代码示例: #include "apue.h" ; char buf[] = "a write to stdout\n"; in ...

  3. Android Strings.xml To CSV / Excel互转

    Android Strings.xml To CSV/Excel互转https://blog.csdn.net/hzxpyjq/article/details/50686983https://blog ...

  4. Delphi数据库数据用文件流方式快速写入Excel文件

    在开发数据库应用程序中,经常要将类型相同的数据导出来,放到Excel文件中,利用Excel强大的编辑功能,对数据作进一步的加工处理.这有许多的方法,我们可以使用OLE技术,在Delphi中创建一个自动 ...

  5. Codeforces 460D Little Victor and Set(看题解)

    Little Victor and Set 其他都很好求, 只有k == 3的时候很难受.. 我们找到第一个不大于l的 t, 答案为 l, 3 * t, (3 * t) ^ l 感觉好像是对的, 感觉 ...

  6. Here We Go(relians) Again HDU2722

    处理完输入就是很简单的一题  但是输入好难 勉强找到一种能看懂的... #include<iostream> #include<stdio.h> #include<str ...

  7. 【Java】 剑指offer(64) 求1+2+…+n

      本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 求1+2+…+n,要求不能使用乘除法.for.while.if ...

  8. 神舟战神 HotKey 主面板无法打开? Fn+Esc失效?

    战神笔记本的 Fn+Esc快捷键是打开 HotKey 主面板的, 其实就是  Control Center Windows更新可能导致 Control Center 无法打开,解决办法就是   更新驱 ...

  9. ACM笔记

    写给自己看,纯属打发时间... Sacnf的返回值是成功赋值的变量个数 for(int i=0; i<100; i++)    在C++标准中指出for循环条件中定义的变量,作用域仅限于循环内部 ...

  10. Python + Selenium + AutoIt 模拟键盘实现另存为、上传、下载操作详解

    前言 在web页面中,可以使用selenium的定位方式来识别元素,从而来实现页面中的自动化,但对于页面中弹出的文件选择框,selenium就实现不了了,所以就需引用AutoIt工具来实现. Auto ...