文章插图
这个虽然是闲扯淡的,但是看的时候请抓牢:
- 我们一切以业务方案为目的,
- 一些关键名词和概念还是很认真 。
这是从别人那边听来的故事,作为安全知识的入门非常有意义 。
- 一个国王英年早逝,留下年幼的王子,国王的弟弟就做了摄政王 。
- 王子快18岁的时候,他叔叔派他做信使,给另外一个国王送信,还让侍卫长跟着 。
- 王子晚上趁着侍卫长睡着了,偷偷打开信件,看见里面的内容是: 请您杀了这个信使 。
- 王子于是把信件修改了一下:请把您的女儿嫁给信使 。
- 王子然后做了那个国家的驸马 。过几年后,岳父也死了,他就做了国王,带兵杀回去报仇 。
- 数据的隐秘:他的信件内容被别人看到了 。
- 数据的篡改:他的邮件被人冒充了 。
- 针对第一个情况:他写的信,每个字母向后偏移10个位置——数据被加密了
- 针对第二个情况:商量了一个算式,每个信件,把全部字母的数字加起来,通过这个算式算出来一个新的数字,写在信件最后,这样除了他俩,没谁能伪造信——数据被签名了
Public Key Infrastructure,公开密钥体系,就是针对这个情况的 。
这个体系的特点是,算法思路和实现都可以是公开的,只要保证Key的安全就可以 。
【软件中的加密算法】这个章节里面,我们只要讲到加密和签名就可以了 。
加密
加密根据密钥可以粗略的分俩类
对称加密
对称加密,就是加密和解密的过程里面,用的key都是一个——我们称为SecretKey 。
- AES:一般记得这个就可以了,因为现在好像也就它是最好用的
- DES、3Des:我经常在代码里面能看见的 。
- 其它
非对称加密
非对称加密,加密和解密的密钥不同,用于加密的称为公钥(PublicKey),用于解密的称为私钥(PrivateKey) 。
业务跟进:我们的建议,国王们各自有一套公钥+私钥,私钥自己保留好,公钥发布给大家 。谁想给某人写信了,就用这个人的公钥加密,信件半路上被人截胡了,也无法解密内容 。
- RSA:最出名的,在以前非对称加密就是区分为RSA和其它,
- ECC:当前最牛的规范,rsa也变成其它了
- 其它:
- 对称加密在技术上有优势,同样的安全级别下,加密解密的速度快很多
- 对称加密同时也兼具签名功能
- 但是在多用户业务场景,有无法解决的问题:
- 俩个人玩,一套SecretKey就够了
- 三个人玩,3套
- 四个人玩,12套,
- …… N的组合数量 。
- 结论:后面讨论各自适合场景 。
JAVA伪码表示如下
- 签名:byte[] sign(byte[] content, PrivateKey prvKey)
- 验签:boolean verify(byte[] result, byte[] content, PublicKey pubKey)
- 私钥放在自己手里,用来解密和签名,这俩个事情都明显是个人的私密行为,因此私钥
- 公钥发布出去,用来加密和验签,这俩个事情明显是个人对外的公开行为,因此公钥
- 每个国王自己做一套公钥私钥
- 把自己的私钥保存好,把公钥送给其他的每个国王,
推荐阅读
- 神话中的女神有哪些 上古神话女性人物
- 老班章,普洱中的霸王
- 成长中的中国品牌!三款纯电中型SUV推荐
- 比较靠谱的开网店软件 开网店需要什么软件有哪些
- 于丹眼中的刘湘云,柔和的女人
- 切记,不要空腹喝红茶!
- 漫游对称加密算法
- 如何利用shell脚本中的eval命令来构造"智能"命令
- 月薪20K软件测试开发岗基础知识总结,揭开测试工程师的进阶之路
- JavaScript 中的位运算和权限设计