特点:加密解密效率高、速度快、空间占用小、加密强度高 缺点:参与多方都需要持有密钥、一旦有一个人泄露则安全性遭到破坏、另外再不容安全通道下分发密钥也是个问题。 代表算法:DES、3DES、AES、IDEA等等 DES:其密钥长度为56位+8位校验 破解方式:暴力破解 3DES:3重DES操作 算法不能靠累积增加防御力 AES:分组算法、分组长度为128、192、256位三种、其优势在于 速度快 整个过程可以数学化描述、目前尚未有效破解手段 适合场景:适用于大量数据加解密、不能用于签名场景 需要提前分法密钥
介绍:即公钥+私钥 公钥是公开的、私钥是个人持有的 代表算法:RSA、EIGamal、椭圆算法 ECC RSA:经典的公钥算法 安全性未知 EIGamal:利用了模运算下求离散对数困难的特性 椭圆曲线算法:现代备受关注的算法系列,基于对椭圆曲线上特定点进行特殊乘法逆运算难以计算的特性。 Ps:RSA 算法等已被认为不够安全,一般推荐采用椭圆曲线系列算法。
先用计算复杂度高的非对称加密协商一个临时的对称加密密钥(会话密钥,一般相对内容来说要短得多),然后对方在通过对称加密对传递的大量数据进行加解密处理。
典型应用:现在大家常用的HTTPS机制、HTTPS实际上是利用了Transport Layer Security/Secure Socket Layer(TLS/SSL)来实现可靠性传输。 建立安全连接步骤:
加盐需要注意两点:短盐值、盐值重复 两大弊端:盐值重复或者硬编到软件中、可以通过破解软件、专门为这个软件生成彩虹表和查询表 盐值太短:就相当于降低密码复杂度、这使得破解字典体积更小、跑字典破解更快。
public class MD5Test {
@Test
public void test(){
//原始 密码
String source = "123456";
//盐
String salt = "helen";
//散列次数
int hashIterations = 1024;
//构造方法:
//第一个参数:散列算法
//第二个参数:明文,原始密码
//第三个参数:盐,通过使用随机数
//第四个参数:散列的次数,比如散列两次,相当 于md5(md5(''))
//这个加密的方法名不是乱写的,具体要看api,shiro提供了相当丰富的加密 方式,只是你//写的名字必须要和其一致
SimpleHash simpleHash = new SimpleHash("md5", source, salt, hashIterations);
String md5 = simpleHash.toString();
System.out.println(md5);
}
}
只听到从山间传来架构君的声音: 嗷嗷空城雀,身计何戚促。有谁来对上联或下联?
让密码更难破解:慢哈希函数 PBKDF2、BCRYPT、SCRYPT曾经是最常用的三种密码Hash算法。
今天文章到此就结束了,感谢您的阅读,祝您升职加薪,年年好运。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有