如何快速搞懂密码学

近期跟新人面试沟通时,发现许多人对浏览器如何与服务器交互、如何进行数据传输等问题无法作出解答,在此特别梳理一下密码学的基本概念,希望能对大家了解密码学相关基础知识有所帮助 。
【如何快速搞懂密码学】一、基本概念
名词解释:
cryptology 密码学
plaintext 明文
cipher-text 密文
encrypt 加密
decrypt 解密
crytography 密码
confidentiality 机密性、加密等级
Bit、byte:比特(Bit)与字节(byte)的关系是8个Bit = 1byte
编码:将数据(文本、音频、视频)映射为比特序列的过程 。
密钥:固定长度的字符串 。通过密钥及加解密算法,对给定的数据进行加密和解密 。
对称加密:在加密和解密的过程中,使用相同的密钥,称为对称加密 。
非对称加密:在加解密的过程中,使用不同的密钥(私钥、公钥),称为非对称加密 。
加解密流程:明文+密钥à加密算法=>密文+密钥à解密算法=>明文
 
二、现代分组密码操作模式
分组模式对加解密至关重要 。现代分组密码的操作模式分为5种:电子密码本模式(ECB),密码分组链接模式(CBC),密码反馈模式(CFB),输出反馈模式(OFB),以及计数器模式(CTR)
ECB(Electronic Codebook)
明文按照分组密码的分组大小(n 比特)被分为 N 个分组,对于每个分组使用相同的密钥加密 。
ECB加密过程如下:
 

如何快速搞懂密码学

文章插图
 
 
ECB解密过程如下:
 
如何快速搞懂密码学

文章插图
 
 
CBC(Cipher Block Chaining)加密过程:
 
如何快速搞懂密码学

文章插图
 
 
CBC解密过程:
 
如何快速搞懂密码学

文章插图
 
 
CFB
 
如何快速搞懂密码学

文章插图
 
 
OFB
 
如何快速搞懂密码学

文章插图
 
 
 
CTR
 
如何快速搞懂密码学

文章插图
 
 
 
三、对称加密算法
1. DES(DataEncryptionStandard)
DES对密钥长度的要求为56个Bit,每一个byte需要一个比特的校验位 。以DES算法的CBC分组模式讲解阐述一下该算法,对于CBC分组方式,会面临分组长度不够的问题,具体处理方法如下:
(1)计算出要填充的字节数,例如填充为2
(2)需要填充的字节为2
(3)当密文解密时,将最后一个字节的值取出,转换成整形数值
(4)结果(3)得到的数值就是要删除的字节数
 
2. 3DES算法
3DES是DES加密算法的一种模式,它使用3条64Bit的密钥对数据进行三次加密,其加密流程如下:
 
如何快速搞懂密码学

文章插图
 
 
 
3. AES
AES算法需要的密钥长度有128、192、256Bit三种,分组长度理论上三种情况16字节、24字节、32字节 。当密钥长度为256Bit时,效率低,但机密性最高 。在任何加解密算法中,分组长度和密钥长度一定是相等的 。AES采用CBC的分组模式,密钥长度16个字节,初始化向量必须保证为16个字节 。
 
四、非对称加密
用秘钥进行解密时,想要将密钥安全的发送给接收者、解决密钥配送问题,就需要采用非对称加密技术 。
非对称加密技术的密钥分为两部分:公钥与私钥 。公钥可以公开,私钥是隐私的,不能泄露 。
非对称加密技术,加密与解密采用不同的密钥(公私钥) 。公钥进行加密,需要用私钥进行解密;私钥加密,需要用公钥进行解密 。
非对称加密的图示流程:
 
 
如何快速搞懂密码学

文章插图
 
 
 
非对称加密算法(RSA)
RSA名字的由来是由此算法的三位开发者的名字RonRivest, AdiShamir和LeonaraAdleman的姓氏首字母组成 。
非对称加密算法简单案例:
1.公钥加密公式:
如何快速搞懂密码学


推荐阅读