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));
        }
    }
    好的代码像粥一样,都是用时间熬出来的
  • 相关阅读:
    9.19 数组 冒泡排序和二分法
    9,18 考试
    html5学习拓展
    第七天,
    第六天 js 开始
    第五天 列表 流
    第四天 样式,框架
    硬件攻城狮设计需要考量的11个关键因素
    步进电机的驱动方式
    MOS管防反接电路设计
  • 原文地址:https://www.cnblogs.com/jijm123/p/15452001.html
Copyright © 2011-2022 走看看