iOS加密算法ECB CBC的区别

iOS加密模式常见的有四种,分别是
ECB(Elecyronic Code Book,电子密码本)、
CBC(Cipher Block Chaining,加密块链)、
CFB(Cipher FeedBack Mode,加密反馈)、
OFB(Output FeedBack,输出反馈)。

若使用CBC模式,则为kCCOptionPKCS7Padding
若使用ECB模式,则为kCCOptionPKCS7Padding | kCCOptionECBMode.

 ECB:将每一个数据块单独加密后,在拼接。 解密也是同样的道理。先拆分数据库,再单独解密
 CBC:加密每一个数据块,都会与上一个数据块有联系。密码块链,使用秘钥和一个向量对数据执行加密转换, 能够保证密文的完整性。如果一个数据改变了。后面数据都会造成改变

终端命令

ECB
openssl enc -aes-128-ecb -K 616263 -nosalt -in abc.text -out msg2.bin
 xxd msg1.bin

 /*
  openssl: 加密库
  enc: 加密方式
  -aes-128-ecb  aes加密算法 ecb加密模式 
 -K 616263:秘钥616263
 -nosalt 不加盐
 -in abc.text 对abc.text加密
 -out msg1.bin 加密后生成的文件
*/
ECB模式改变一个数值后密文变化
CBC
 openssl enc -aes-128-cbc -iv 0102030405060708 -K 616263 -nosalt -in abc.text - out msg4.bin
 xxd msg4.bin

 /*
  openssl: 加密库
  enc: 加密方式
  -aes-128-cbc   aes-128加密算法  ecb加密模式 
 -iv 0102030405060708 初始向量
 -K 616263 秘钥616263
 -nosalt 不加盐
 -in abc.text 对abc.text加密
 -out msg1.bin 加密后生成的文件
*/
CBC模式改变一个数值后密文变化

由上图可见在仅改变一个数字 0/5的情况下,
ECB加密后的密文,只改变了对应的数据。后面数据都未变化
CBC加密后的密文。改变0/5后的数据剧都发生了改变

你可能感兴趣的:(iOS加密算法ECB CBC的区别)