失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 【转】国密算法sm4 CBC模式加解密

【转】国密算法sm4 CBC模式加解密

时间:2022-11-05 23:15:15

相关推荐

【转】国密算法sm4 CBC模式加解密

一.什么是CBC模式?

CBC模式的全称是Cipher Block Chaining模式(密文分组链接模式),之所以叫这个名字,是因为密文分组像链条一样相互连接在一起。

在CBC模式中,首先将明文分组与前一个密文分组进行异或运算,然后再进行加密。

异或运算:

异或,英文为exclusive OR,缩写成xor

异或(xor)是一个数学运算符。它应用于逻辑运算。异或的数学符号为“⊕”,计算机符号为“xor”。其运算法则为:

a⊕b = (¬a ∧ b) ∨ (a ∧¬b)

如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。

异或也叫半加运算,其运算法则相当于不带进位的二进制加法:二进制下用1表示真,0表示假,则异或的运算法则为:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同为0,异为1),这些法则与加法是相同的,只是不带进位,所以异或常被认作不进位加法。

异或略称为XOR、EOR、EX-OR

程序中有三种演算子:XOR、xor、⊕。

使用方法如下

z = x ⊕ y

z = x xor y

二.CBC模式加解密过程如下:

1.加密过程例如以下:

首先将数据依照8个字节一组进行分组得到D1D2......Dn(若数据不是8的整数倍,用指定的PADDING数据补位)第一组数据D1与初始化向量iv异或后的结果进行DES加密得到第一组密文C1(初始化向量I为全零)第二组数据D2与第一组的加密结果C1异或以后的结果进行DES加密,得到第二组密文C2之后的数据以此类推,得到Cn按顺序连为C1C2C3......Cn即为加密结果。

2. 解密密过程例如以下:

首先将数据依照8个字节一组进行分组得到C1C2C3......Cn将第一组数据进行解密后与初始化向量I进行异或得到第一组明文D1(注意:一定是先解密再异或)将第二组数据C2进行解密后与第一组密文数据进行异或得到第二组数据D2之后依此类推。得到Dn按顺序连为D1D2D3......Dn即为解密结果。

这里注意一点,解密的结果并不一定是我们原来的加密数据,可能还含有你补得位。一定要把补位去掉才是你的原来的数据。

三.CBC模式特点

cbc模式在进行加密之前一定会与前一个密文组进行异或运算,因此即使明文D1与明文D2值相等,密文C1与密文C2也不一定是相等的cbc模式无法单独的对一个明文组进行加密,必须有前一个密文组,第一个密文组依赖于IV产生解密时如果其中一个密文组损坏,只要密文分组的长度没有发生变化,则解密时最多只有2个分组受到数据损坏的影响资源下载地址/download/qq_27969037/11327461

如果觉得《【转】国密算法sm4 CBC模式加解密》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。