用Hash算法对密码进行散列,以及获取Salt的工具类

一、HashUtils(“MD5” / “SHA1”)

	public static String getMD5( String str ) {
		return hash( str, "MD5" );
	}

	public static String getMD5( File file ) {
		return hash( file, "MD5" );
	}

	public static String getSHA1( String str ) {
		return hash( str, "SHA1" );
	}

	public static String getSHA1( File file ) {
		return hash( file, "SHA1" );
	}

	/**
	 * 计算字符串的hash值
	 * @param string
	 * @param algorithm
	 * @return
	 */
	private static String hash( String string, String algorithm ) {
		String result = "";
		if( !StringUtils.isEmpty( string ) ) {
			MessageDigest hash = null;
			try {
				hash = MessageDigest.getInstance( algorithm );
				byte[] bytes = hash.digest( string.getBytes( "UTF-8" ) );
				for( byte b : bytes ) {
					String temp = Integer.toHexString( b & 0xff );
					if( temp.length() == 1 ) {
						temp = "0" + temp;
					}
					result += temp;
				}
			} catch( NoSuchAlgorithmException e ) {
				e.printStackTrace();
			} catch( UnsupportedEncodingException e ) {
				e.printStackTrace();
			}
		}
		return result;
	}

	/**
	 * 计算文件的hash值
	 * @param file
	 * @param algorithm
	 * @return
	 */
	private static String hash( File file, String algorithm ) {
		String result = "";
		if( file != null && file.isFile() && file.exists() ) {
			FileInputStream in = null;
			byte[] buffer = new byte[ 1024 ];
			int len;
			try {
				MessageDigest hash = MessageDigest.getInstance( algorithm );
				in = new FileInputStream( file );
				while( ( len = in.read( buffer ) ) != -1 ) {
					hash.update( buffer, 0, len );
				}
				byte[] bytes = hash.digest();

				for( byte b : bytes ) {
					String temp = Integer.toHexString( b & 0xff );
					if( temp.length() == 1 ) {
						temp = "0" + temp;
					}
					result += temp;
				}
			} catch( Exception e ) {
				e.printStackTrace();
			} finally {
				if( null != in ) {
					try {
						in.close();
					} catch( IOException e ) {
						e.printStackTrace();
					}
				}
			}
		}
		return result;
	}

二、获取Salt值

	Random RANDOM = new SecureRandom();
	byte[] bytes = new byte[16];
	RANDOM.nextBytes(bytes);
	String salt = new BASE64Encoder().encode(bytes);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值