Java實現密碼、檔案MD5加密,密碼sha256、sha384、sha512Hex等加密
Java實現密碼、檔案MD5加密,密碼sha256、sha384、sha512Hex等加密!
使用時請先匯入 commons-codec-1.12.jar 包。pom.xml 檔案如下:
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.12</version>
</dependency>
使用方法如下所示:
package com.xttblog.test.utils;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import org.apache.commons.codec.binary.Base64OutputStream;
import org.apache.commons.codec.digest.DigestUtils;
/**
* 類說明:密碼的加密與解密
* @author 作者: www.xttblog.com
* @version 建立時間:2019-03-05 上午11:07:09
*/
public class PasswordEncode {
public final static String MD5 = "MD5";
public final static String NONE = "NONE";
public final static String SHA_256 = "SHA-256";
public final static String SHA_512 = "SHA-512";
public final static String SHA_384 = "SHA-384";
/**
* 加密檔案演算法
* @param filename
* 需要加密的檔名
* @param algorithm
* 加密演算法名
*/
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();
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();
} catch (Exception ignored) {
}
try {
if (fos != null)
fos.close();
} catch (Exception ignored) {
}
}
}
/**
* 加密密碼演算法
* @param pass
* 需要加密的原始密碼
* @param algorithm
* 加密演算法名稱
* @return 加密後的密碼
* @throws NoSuchAlgorithmException
* 當加密演算法不可用時丟擲此異常
*/
public static String digestString(String password, String alg) throws NoSuchAlgorithmException {
String newPass;
if (alg == null || MD5.equals(alg)) {
newPass = DigestUtils.md5Hex(password);
} else if (NONE.equals(alg)) {
newPass = password;
} else if (SHA_256.equals(alg)) {
newPass = DigestUtils.sha256Hex(password);
} else if (SHA_384.equals(alg)) {
newPass = DigestUtils.sha384Hex(password);
} else if (SHA_512.equals(alg)) {
newPass = DigestUtils.sha512Hex(password);
} else {
newPass = DigestUtils.shaHex(password);
}
return newPass;
}
/**
* 加密密碼演算法,預設的加密演算法是MD5
* @param password
* 未加密的密碼
* @return String 加密後的密碼
*/
public static String digestPassword(String password) {
try {
if (password != null && !"".equals(password)) {
return digestString(password, MD5);
} else
return null;
} catch (NoSuchAlgorithmException nsae) {
throw new RuntimeException("Security error: " + nsae);
}
}
/**
* 判斷密碼是不是相等,預設的加密演算法是MD5
* @param beforePwd
* 要判斷的密碼
* @param afterPwd
* 加密後的資料庫密碼
* @return Boolean true 密碼相等
*/
public static boolean isPasswordEnable(String beforePwd, String afterPwd) {
if (beforePwd != null && !"".equals(beforePwd)) {
String password = digestPassword(beforePwd);
return afterPwd.equals(password);
} else
return false;
}
public static void main(String[] args) throws NoSuchAlgorithmException {
System.out.println(PasswordEncode.digestPassword("123456"));
System.out.println(PasswordEncode.digestString("123456", PasswordEncode.MD5));
PasswordEncode.digestFile("C:\\Users\\user\\Desktop\\PasswordEncode.java", PasswordEncode.SHA_512);
System.out.println(PasswordEncode.isPasswordEnable("123456", PasswordEncode.digestPassword("123456")));
}
}
相關文章
- SpringBoot專案配置檔案中密碼的加密Spring Boot密碼加密
- Go 如何實現 PHP 的密碼加密解密GoPHP密碼加密解密
- 如何在 Linux 上用密碼加密和解密檔案Linux密碼加密解密
- 密碼引擎-加密API研究密碼加密API
- springboot使用者登陸密碼兩次md5加密Spring Boot密碼加密
- python_hashlib,md5,getpass, 密碼加密,隱藏,加鹽Python密碼加密
- app直播原始碼,Node.js實現密碼雜湊加密APP原始碼Node.js密碼加密
- 文字加密:常見的密碼加密解密方法加密密碼解密
- 密碼學之對稱加密密碼學加密
- RSA加密原理&密碼學&HASH加密密碼學
- 序列密碼的加密與解密密碼加密解密
- 實驗一-密碼引擎-3-加密API密碼加密API
- 【Java小工匠聊密碼學】–對稱加密–概述Java密碼學加密
- 密碼引擎-3-加密API研究密碼加密API
- 商密學習-分組密碼加密模式筆記密碼加密模式筆記
- 基於C#實現-維吉尼亞密碼加密、解密C#密碼加密解密
- 實驗一-密碼引擎-3-加密API研究密碼加密API
- 室友的Zip加密檔案探祕,Python解決Zip加密檔案探索祕密!加密Python
- MySQL密碼加密認證的簡單指令碼MySql密碼加密指令碼
- Express下采用bcryptjs進行密碼加密ExpressJS密碼加密
- 【教程】原始碼加密、防洩密軟體原始碼加密
- golang 密碼學-1. 對稱加密Golang密碼學加密
- Oracle 密碼檔案Oracle密碼
- java實現MD5加鹽加密方法Java加密
- 使用Jasypt在Spring Boot專案中加密配置檔案中任何密碼 - Aanchal SharmaSpring Boot加密密碼
- Springboot+logback+druid +密碼加密 實現業務日誌入庫Spring BootUI密碼加密
- PostgreSQL使用者密碼如何透過md5加密儲存,是否加了saltSQL密碼加密
- word文件加密忘了密碼怎麼開啟 word文件解除密碼的方法加密密碼
- 前端使用bcrypt對密碼加密,伺服器對密碼進行校驗前端密碼加密伺服器
- 密碼學系列——常見的加密方式(c#程式碼實操)密碼學加密C#
- qt實現md5加密QT加密
- node js如何實現密碼雜湊加密以及jwt登陸驗證JS密碼加密JWT
- vue中使用cookies和crypto-js實現記住密碼和加密VueCookieJS密碼加密
- golang 密碼學-2. 非對稱加密Golang密碼學加密
- 最新webqq密碼的加密方式分析過程Web密碼加密
- Centos8加密GRUB防破解root密碼CentOS加密密碼
- Centos8 加密 GRUB 防破解root密碼CentOS加密密碼
- Python學習——Caesar Cipher密碼破解(加密)方法Python密碼加密