密码、文件MD5加密,密码sha256、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;
	}

}

密码、文件MD5加密,密码sha256、sha384、sha512Hex等加密

时间: 2024-11-07 09:37:31

密码、文件MD5加密,密码sha256、sha384、sha512Hex等加密的相关文章

Oracle 密码文件与用户密码的关系

今天一位同事接到一项任务是修改数据库SYS和SYSTEM用户的密码,老大在布置任务的时候还带了一句别忘了同步密码文件,于是想到了自己前几天写的一篇博客介绍Oracle密码文件的,当时只是写了如何创建密码文件,如何远程使用SYSDBA登录数据库做操作,但是并没有提到密码文件中用户的密码跟数据库中用户的密码是否有关系. 下面来测试一下,我用的平台是11.2.0.4 首先修改SYS的密码 [email protected]>alter user sys identified by zhaoxu; Us

(转)Oracle 密码文件

--============================== -- Oracle密码文件 --============================== /* 一.密码文件 作用:主要进行DBA权限的身份认证 DBA用户:具有sysdba,sysoper权限的用户被称为dba用户.默认情况下sysdba角色中存在sys用户,sysoper角色中存在system用户 二.Oracle的两种认证方式: 1.使用与操作系统集成的身份验证 2.使用Oracle数据库的密码文件进行身份认证 三.密码

oracle 密码文件文件

密码文件作用: 密码文件用于dba用户的登录认证. dba用户:具备sysdba和sysoper权限的用户,即oracle的sys和system用户. 本地登录: 1)操作系统认证: [[email protected] ~]$ sqlplus "/as sysdba" [[email protected] ~]$ sqlplus / as sysdba [[email protected] ~]$ sqlplus sys/tiger as sysdba 2)密码文件认证: [[ema

Android实例-手机安全卫士(十四)-为密码进行MD5加密

一.目标. 将设置的密码通过MD5加密后再保存. 二.代码实现. 1.在自定义工具包(com.example.mobilesafe.ui)中新增一个类(取名MD5Utils).在新建类(MD5Utils)中新建一个返回值为String类型的public的静态方法(取名mD5Encryption),传入参数为String类型(password). 2.在新建的方法(md5Encryption)中: ①.通过消息摘要器对象(MessageDigest)的getInstance(String algo

spring security中配置密码为md5的带salt加密

spring security中配置密码为md5的带salt加密 service: private Md5PasswordEncoder encoder; //spring security md5 public Md5PasswordEncoder getEncoder() { return encoder; } @Resource public void setEncoder(Md5PasswordEncoder encoder) { this.encoder = encoder; } @O

找回MD5加密的密码及MD5加密数据库中数据

有时,在开发过程中,如果不小心更改掉了项目管理员帐号的密码而又忘了,存在数据库里的密码又是MD5加密后的,这时候怎么办?最为菜鸟的我,刚开始也很迷茫,不过向前辈们请教了请教,自己也查了查资料,特意整理记录一下,并分享给大家. 前提是你知道这个密码存在在哪个表的哪个字段,只不过是加密了,如果是oracle数据库的话,可以用DBMS_OBFUSCATION_TOOLKIT.MD5 ( input => utl_raw.cast_to_raw('预置密码'))来得到一个MD5加密后的密码, 所以我们可

MD5 与 SHA 在 Delphi 中函数实现,加密密码

MD5 与 SHA 在 Delphi 中函数实现. 为了加密密码,必须使用一种算法,查询资料,比较好的方法是使用:MD5等算法,参考:Delphi XE8 支持MD5 第一种方式是:引用 System.Hash 中的 THashMD5, (或者 THashSHA1,THashSHA2) 参考 官方文档. http://docwiki.embarcadero.com/Libraries/Tokyo/en/System.Hash 简单用法:  hashmd5 := THashMD5.Create.G

Linux的shadow密码文件

在<Python绝技>这本书的第一个小程序首先展示了针对与unix系统中shadow文件密码的暴力破解的能力,因为之前只是对shadow文件停留在保存了用户密码的阶段,但并没有详细研究,所以周末两天特地花时间好好研究了一下. 1.passwd文件和shadow文件 在unix早些时候是没有/etc/shadow这个文件的.一个用户的所有信息都只是保存在/etc/passwd文件中,加密后的用户密码保存在了passwd文件的第二个字段中.那么为什么要产生shadow文件呢? 首先我们通过ls查看

Linux密码文件

(1).密码文件 [[email protected] ~]# head -3 /etc/shadow root:$6$kcgcu794R0VP3fDL$aYN8XUbtWvZ4QQtT2xVW.N2CgE3YLPdtnprAAtKZUgNdq8itUJEN6NoYQDarLUevcDCWrxMVId8b18ujwST1b0::0:99999:7::: bin:*:17632:0:99999:7::: daemon:*:17632:0:99999:7::: 内容格式如下,用冒号隔开,可以用man