加解密技术在我们平日工作生活中应用随处可见、不可或缺。当前如火如荼的区块链技术的确权无信任实现的底层根基就是加解密技术。
因此,掌握常见加解密技术是非常重要的,也是程序员进入区块链行业的必备知识能力。
本系列是本人学习加解密知识过程中的总结整理,希望能帮到大家。本系列将会主要以Golang和java的代码案例对比、互通学习的形式讲解常见加解密知识,希望读者阅读后能快速掌握golang和java中加解密技术。
声明:本系列是一年前学习笔记后的总结,当日学习过程中部分笔记片段直接摘录自网络或者来源于书籍,如今无法找到源地址。故侵删!
推荐阅读
推荐书籍《 Java加密与解密的艺术》作者梁栋,强烈推荐。此书已经帮我们梳理好知识脉络,可使我们学习少些懵逼困惑!
一.不可不知的密码学历史
1.密码学需要基于数学的启发、柯克霍夫原则
二.不可不知的行业标准
1.ASN.1的介绍
(1)DER,PEM编码规则
2.PKI体系介绍
3.X.509介绍
(1)数字证书规范定义
4.PKCS系列标准
(1)公私钥规范定义
5..cert,.cer,.crt,.key常见文件格式后缀的理解
三.Java安全须知
1.JCA和JCE必知的历史细节!!
2.Java的SPI机制了解
3.加密服务提供者-Provider接口及BC中的各功能包介绍(BCJar包时有多个类型的,下载请注意!)
4.引擎类介绍
四.哈希算法 梳理和案例
1.消息摘要与消息认证码MAC
2.MD2,MD5,SHA1,SHA256,SHA383,SHA512介绍
(1)常用实现算法
3.局部敏感哈希算法-LSH
五.对称加密算法 梳理和案例
1.DES,3DES,AES,原理介绍及代码案例
(1)随机数种子、随机数在密钥生成的作用
(2)EBC,CBC分组加密模式;默认地,分组大小由密钥bit数量指定。
(3)padding填充模式:NoPadding和分组大小的非整数倍 的报错重现
2.Blowfish,RC2,RC4简单介绍
3.PBE算法简单介绍
六.非对称加密 梳理和案例
1.RSA及java和Golang代码案例
(1)RSA明文长度、密钥长度等不可不知的知识
(2)分组加密模式和填充模式
2.ECC及java和Golang代码案例
(1)曲线选择与golang和java中的对比
3.DH-密钥交换算法
七.数字签名和数字证书 梳理和案例
1.DSA
2.RSADSA及java和Golang代码案例
3.ECDSA及java和Golang代码案例
八.应用场景
1.HTTPS 和DH,非对称加密,对称加密
2.SSL和TLS
3.单向认证 和 双向认证
4.密钥和证书管理-Java中的Keytool
5.密钥和证书管理-OPENSSL快速入门-略
6.CSR制作、签名、生成数字证书的实践
(1)工具网站、keytool、openssl生成CSR文件 和 解析文件
(2)Csr签名和生成证书
有疑问加站长微信联系(非本文作者)