Skip to content

各种加密

  • 豆知识

Caesar Cipher 凯撒加密 算是最早的加密啦 但是是简单的移动字母

我上堡垒机用的 MFA(multi-factor authentication)

  • 对称加密 symmetric encryption:

  • AES、3DES、DES、3DES、DESX、Blowfish、IDEA、RC4、RC5、RC6

  • 场景:本地数据加密、https通信后期、网络传输

  • 非对称加密:

  • 加密和解密可以使用不同的规则,只要这两种规则之间存在某种对应关系

  • RSA、DSA(数字签名用)、ECC(移动设备用)、Diffie-Hellman、ElGamal
  • 场景:https会话前期、CA数字证书、信息加密、登录认证

  • 信息摘要算法:

  • MD2、MD4、MD5、HAVAL、SHA、SHA-1、HMAC、HMAC-MD5、HMAC-SHA1

  • 对数据进行处理,取得一段固定长度的文本 → 单向算法
  • 场景:不可还原的密码存储、信息完整性校验
  • 相对而言, SHA系列长度更长更难以发生碰撞,但速度相对MD5更慢

  • 加密算法的选择

  • 对称加密算法不能实现数字签名,因此签名只能非对称算法。

  • 验证文件或字符一致性用信息摘要算法。
  • 数据量大用对称加密算法、小则可以用非对称加密。
  • 还可以非对称与对称集成使用,参考https请求原理。

  • 数字签名原理

image-20220915155013571

双方一致的明文是关键!

为了防止公钥在传输过程中被调包,需要证书中心(简称CA)为公钥做认证。证书中心用自己的私钥,对公钥和一些相关信息一起加密,生成"数字证书"(Digital Certificate),客户端用CA的公钥解开数字证书,从而确定公钥的真实性。

RSA是目前最有影响力的公钥加密算法,还支持私钥解密以及私钥加密、公钥解密。但是RSA数字签名算法存在签名易被伪造和计算时间长的弱点,因此实际对文件签名前,需要对消息经单向散列函数计算其消息摘要。比如可以将正文通过MD5消息摘要后,将其再次通过RSA密钥加密,生成数字签名。

  • 签名算法与公钥加密算法的区别

签名算法,用来确保信息发布人的身份和信息的完整性,不能用来做加密传输,为了实现这个功能,信息的原文(或者消息摘要)必须随着签名一起传输和公布才能被验证。而 RSA 是公钥加密体系,它可以用来加密传输(即信息原文在传输中加密,到达对方后解密),它也可以实现签名验证。

这篇写得超好!

https://juejin.cn/post/6995549209348816909

  • MD5 - Message Digest Algorithm 5

映射成128 bit 的数据

  • sha256 - Secure Hash Algorithm

比特币里用的最多。任何一串字符,数字文件(图片,音乐,电影), 经过Sha256的计算,会产生一个256bit的binary representation(哈希值/信息摘要),也就是256/4 = 64位的Hexdecimal的表达方式。

而比特币挖矿其实就是矿工通过计算设备完成由SHA-256加密的复杂数学题,题干是需要被记录的交易,大家通过做题抢夺记账权,抢到的矿工就能获得系统奖励和交易手续费。

  • sm3: 国密算法系列 SM3适用于商用密码应用中的数字签名和验证,是在SHA-256基础上改进实现的一种算法,其安全性和SHA-256相当

  • AES,加解密算法 CBC,数据分组模式 PKCS5Padding,数据按照一定的大小进行分组,最后分剩下那一组,不够长度,就需要进行补齐。简单的说:拿到一个原始数据以后,首先需要对数据进行分组,分组以后如果长度不满足分组条件,需要进行补齐,最后形成多个分组,在使用加解密算法,对这多个分组进行加解密。所以这个过程中,AES,CBC,PKCS5Padding 缺一不可。

以发起浦发支付为例

  • request 需要加密报文
  • 通过 secret 获取 key: sha256key,在 sm3 中写入这个 sha256key,获取 sm3Key 的 md5Key,
  • dd