常见的加密⽅式
1、可逆加密算法
解释: 加密后, 密⽂可以反向解密得到密码原⽂
对称加密
【⽂件加密和解密使⽤相同的密钥,即加密密钥也可以⽤作解密密钥】
解释: 在对称加密算法中,数据发信⽅将明⽂和加密密钥⼀起经过特殊的加密算法处理后,使其变成复杂
好书读后感的加密密⽂发送出去,收信⽅收到密⽂后,若想解读出原⽂,则需要使⽤加密时⽤的密钥以及相同加密算法的逆算法对密⽂进⾏解密,才能使其回复成可读明⽂。
在对称加密算法中,使⽤的密钥只有⼀个,收发双⽅都使⽤这个密钥,这就需要解密⽅事先知道加密密钥。
优点: 对称加密算法的优点是算法公开、计算量⼩、加密速度快、加密效率⾼。
缺点: 没有⾮对称加密安全.
⽤途: ⼀般⽤于保存⽤户⼿机号、⾝份证等敏感但能解密的信息。
常见的对称加密算法有: AES、DES、3DES、Blowfish、IDEA、RC4、RC5、RC6、HS256
⾮对称加密
【两个密钥:公开密钥(publickey)和私有密钥,公有密钥加密,私有密钥解密】
雨节**解释: ** 同时⽣成两把密钥:私钥和公钥,私钥隐秘保存,公钥可以下发给信任客户端.
加密与解密:
私钥加密,持有公钥才可以解密
公钥加密,持有私钥才可解密
熊的英文签名:
私钥签名, 持有公钥进⾏验证是否被篡改过.
**优点: ** ⾮对称加密与对称加密相⽐,其安全性更好;
缺点: ⾮对称加密的缺点是加密和解密花费时间长、速度慢,只适合对少量数据进⾏加密。2024年春节
⽤途: ⼀般⽤于签名和认证。私钥服务器保存, ⽤来加密, 公钥客户拿着⽤于对于令牌或者签名的解密或者校验使⽤.
常见的⾮对称加密算法有: RSA、DSA(数字签名⽤)、ECC(移动设备⽤)、RS256 (采⽤SHA-256 的 RSA 签名) 2、不可逆加密算法
工作电脑壁纸解释: ⼀旦加密就不能反向解密得到密码原⽂.
种类: Hash加密算法, 散列算法, 摘要算法等
⽤途:⼀般⽤于效验下载⽂件正确性,⼀般在⽹站上下载⽂件都能见到;存储⽤户敏感信息,如密码
、 卡号等不可解密的信息。
常见的不可逆加密算法有: MD5、SHA、HMAC
3、Ba64编码
a64是⽹络上最常见的⽤于传输8Bit字节代码的编码⽅式之⼀。Ba64编码可⽤于在HTTP环境下传递较长的标识信息。采⽤Ba64Ba64编码解码具有不可读性,即所编码的数据不会被⼈⽤⾁眼所直接看到。注意:Ba64只是⼀种编码⽅式,不算加密⽅法。
爱家乡4、密码加密的⽅式选型
4.1 MD5密码加密
//md5加密 DegestUtils:spring框架提供的⼯具类
String md5Str = DigestUtils.md5DigestAsHex(“abc”.getBytes());
System.out.println(md5Str);//900150983cd24fb0d6963f7d28e17f72
md5相同的密码每次加密都⼀样,不太安全
4.2 ⼿动加密(md5+随机字符串)
这样同样的密码,加密多次值是不相同的,因为加⼊了随机字符串
//uername:zhangsan password:123 salt:随时字符串
String salt = RandomStringUtils.randomAlphanumeric(10);//获取⼀个10位的随机字符串
System.out.println(salt);
String pswd ="123"+salt;
String saltPswd = DigestUtils.Bytes());
System.out.println(saltPswd);
四字词语及意思4.3 ⼿动加密(md5+随机字符串)
在⽤户模块,对于⽤户密码的保护,通常都会进⾏加密。我们通常对密码进⾏加密,然后存放在数据库中,在⽤户进⾏登录的时候,将其输⼊的密码进⾏加密然后与数据库中存放的密⽂进⾏⽐较,以验证⽤户密码是否正确。 ⽬前,MD5和BCrypt⽐较流⾏。相对来说,BCrypt⽐MD5更安全。
蒸
String gensalt = salt();//这个是盐 29个字符,随机⽣成
System.out.println(gensalt);
String password = BCrypt.hashpw("123456", gensalt);//根据盐对密码进⾏加密
System.out.println(password);//加密后的字符串前29位就是盐
boolean checkpw = BCrypt.checkpw("123456","$2a$10$wLyWFTOu8woE08zMIW");
System.out.println(checkpw);