1. 程式人生 > 其它 >hexSHA1雜湊加密解密(不可逆)

hexSHA1雜湊加密解密(不可逆)

1.maven引入codec和commons依賴:

<dependency>
  <groupId>commons-codec</groupId>
  <artifactId>commons-codec</artifactId>
  <version>1.9</version>
</dependency>
<dependency>
  <groupId>org.apache.commons</groupId>
  <artifactId>commons-lang3</
artifactId> <version>3.4</version> </dependency>

2.util新建secrity包放入Digests.java、Encodes.java和Exceptions.java工具類

3.ValidateUtil:

public class ValidateUtil {
    public static final String HASH_ALGORITHM = "SHA-1";
    public static final int HASH_INTERATIONS = 1024;
    public static
final int SALT_SIZE = 8; /** * @param plainPassword * @return password 加密密碼(生成安全的密碼,生成隨機的16位salt並經過1024次 sha-1 hash) */ public static String entryptPassword(String plainPassword) { byte[] salt = Digests.generateSalt(SALT_SIZE); byte[] hashPassword = Digests.sha1(plainPassword.getBytes(), salt, HASH_INTERATIONS);
return Encodes.encodeHex(salt) + Encodes.encodeHex(hashPassword); } /** * @param plainPassword * @param password * @return boolean 解密判斷密碼是否正確 */ public static boolean validatePassword(String plainPassword, String password) { byte[] salt = Encodes.decodeHex(password.substring(0, 16)); byte[] hashPassword = Digests.sha1(plainPassword.getBytes(), salt, HASH_INTERATIONS); return password.equals(Encodes.encodeHex(salt) + Encodes.encodeHex(hashPassword)); } }
好的程式碼像粥一樣,都是用時間熬出來的