01-常见加密

一.加密、Hash、编/解码 概念

加密:加密对应着解密,所以不能反推出明文的都不应该是加密算法  
Hash:MD5 和 Bcrypt 都是Hash散列算法,是不可逆的,所以它们不能叫做加密  
编/解码:常见的编解码 有URLEncoder和URLDecoder、Base64、Unicode

二.常用的密码Hash算法

  • MD5: MD5的强度现在已经不够用,暴力破解和彩虹表的出现使MD5方式已经不够安全; 存储密码的时候应该不应该选用了

  • sha1、sha256、sha512

  • BCrypt BCrypt 是采用强Hash算法,比MD5强度更大; 可以采用Spring-Security框架中的 BCryptPasswordEncoder类进行对密码加密

BcryptPasswordEncoder类加密和解密

特点:相同明文每次encode结果不一样,但是还是能够验证成功,原理是encode时添加的盐值被隐藏在加密后的密文中

    @Test
    public void encodeAndDecode(){
        BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
        // 相同明文每次encode结果不一样,但是还是能够验证成功,原理是encode时添加的盐值被隐藏在加密后的密文中
        String hashedPassword = encoder.encode("admin");
        System.out.println("hashedPassword=>"+hashedPassword);
        boolean isMatch = encoder.matches("admin", hashedPassword);
        System.out.println("isMatch=>"+isMatch);
    }

三.常见加密算法

参考博客:https://blog.csdn.net/dengjili/article/details/85862201

对称加密:加密和解密用同一个密钥

  • DES

  • 3DES

  • AES

非对称加密:加密和解密用不同的密钥 (一般有公钥和私钥)

  • RSA

四.常见的编/解码

  • URLEncoder 和 URLDecoder

  • Base64

  • Unicode

Last updated

Was this helpful?