加密一般分为对称加密(Symmetric Key Encryption)和非对称加密(Asymmetric Key Encryption)。
对称加密又分为分组加密和序列密码。
分组加密算法中,有ECB, CBC, CFB, OFB这几种算法模式。
1. ECB(Electronic Code Book),明文分组后,每个分组与密钥计算得到一个密文,将每个密文连接起来组成最终的密文。
2. CBC(Cipher Block Chain),需要初始向量。明文分组后,第一个明文分组与初始向量异或,然后与秘钥计算得到第一个密文,第一个密文与第二个分组异或,然后与秘钥计算得到第二个密文,以此类推,将每个密文连接起来组成最终的密文。
3. CFB(Cipher Feedback),初始向量加密,取其前n位,与明文异或得到密文。得到的密文当做初始向量重复前面的过程。
4. OFB(Output Feedback),初始向量加密,取其前n位,与明文异或得到密文。将之前异或的结果当做初始向量重复前面的过程。
ECB:
c1 = sec(block1)
c2 = sec(block2)
CBC:
c1 = sec(IV^block1)
c2 = sec(c1^block2)
CFB:
c1 = leftmostn(sec(IV))^block1
c2 = leftmostn(sec(c1))^block2
OFB:
tmp = leftmostn(sec(IV))
c1 = tmp^block1
tmp = leftmost(sec(tmp))
c2 = tmp^block2
对称加密又分为分组加密和序列密码。
分组加密算法中,有ECB, CBC, CFB, OFB这几种算法模式。
1. ECB(Electronic Code Book),明文分组后,每个分组与密钥计算得到一个密文,将每个密文连接起来组成最终的密文。
2. CBC(Cipher Block Chain),需要初始向量。明文分组后,第一个明文分组与初始向量异或,然后与秘钥计算得到第一个密文,第一个密文与第二个分组异或,然后与秘钥计算得到第二个密文,以此类推,将每个密文连接起来组成最终的密文。
3. CFB(Cipher Feedback),初始向量加密,取其前n位,与明文异或得到密文。得到的密文当做初始向量重复前面的过程。
4. OFB(Output Feedback),初始向量加密,取其前n位,与明文异或得到密文。将之前异或的结果当做初始向量重复前面的过程。
ECB:
c1 = sec(block1)
c2 = sec(block2)
CBC:
c1 = sec(IV^block1)
c2 = sec(c1^block2)
CFB:
c1 = leftmostn(sec(IV))^block1
c2 = leftmostn(sec(c1))^block2
OFB:
tmp = leftmostn(sec(IV))
c1 = tmp^block1
tmp = leftmost(sec(tmp))
c2 = tmp^block2