zoukankan      html  css  js  c++  java
  • 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));
        }
    }
  • 相关阅读:
    scss-数据类型
    scss-@import
    scss-&父选择器标识符
    scss-嵌套属性
    Python之NumPy(axis=0 与axis=1)区分
    Java map 详解
    java之JDBC多条语句执行
    p-value值的认识
    numpy.random之常用函数
    Python random模块sample、randint、shuffle、choice随机函数
  • 原文地址:https://www.cnblogs.com/cosyer/p/6634549.html
Copyright © 2011-2022 走看看