package cn.com.ty.lift.system.utils;

import cn.com.ty.lift.common.utils.Base64Encoder;

import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.util.Random;

/**
 * @author huangyuan
 * @date 2019-11-30
 * @description 密码工具
 */
public class PasswordUtils {

    /**
     * @param
     * @return 返回随机码
     * @description 生成随机码-盐(salt)
     * @date 2019/11/27 10:03 AM
     */
    public static String randomCode() {
        StringBuilder checkCode = new StringBuilder();
        char[] character = {'0', '1', '2', '3', '4', '5', '6', '8', '9'};
        Random random = new Random();
        //生成验证码字符串
        for (int i = 0; i < 16; i++) {
            checkCode.append(character[random.nextInt(character.length)]);
        }
        return checkCode.toString();
    }

    /**
     * @param password 密码
     * @param salt     盐
     * @return
     * @description 对密码进行加盐并进行hash加密
     */
    public static String generatePassword(String password, String salt) {
        try {
            String newPassword = password + salt;
            //sha1加密
            MessageDigest md = MessageDigest.getInstance("SHA-1");
            //把字符串转为字节数组
            byte[] bytePassword = newPassword.getBytes(StandardCharsets.UTF_16LE);
            //使用指定的字节来更新我们的摘要
            md.update(bytePassword);
            //获取密文  （完成摘要计算）
            bytePassword = md.digest();
            return new Base64Encoder().encode(bytePassword);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "";
    }

}
