各加密模式的演示(ECB,CBC)

对于较长的明文进行加密需要进行分块加密,但是直接加密(ecb)不容易隐藏模式,用OpenCV写了个程序论证了一下

ECB

优点就是简单,可以并行计算,不会迭代误差

缺点就是隐藏不了模式

各加密模式的演示(ECB,CBC)

CBC

需要初始化向量IV,来加密第一块C0.

有点就是比ECB好

缺点不利于并行计算、误差会迭代,还需要初始向量

各加密模式的演示(ECB,CBC)  

各加密模式的演示(ECB,CBC)

加密算法为简单的位翻转

#define bitrev(b) (((b)<<7)&0x80) |  \
      (((b)<<)&0x40) |  \
      (((b)<<)&0x20) |  \
      (((b)<<)&0x10) |  \
      (((b)>>)&0x08) |  \
      (((b)>>)&0x04) |  \
      (((b)>>)&0x02) |  \
      (((b)>>)&0x01)   

ECB加密,就是直接分块进行加密

    ;i<grey->width;i++)
        ;j<grey->height;j++)
            grey->imageData[j*grey->width+i]=bitrev(grey->imageData[j*grey->width+i]);
    cvNamedWindow("ecb");
    cvShowImage("ecb", grey);

CBC加密,与上一块密文异或后加密

    ;i<grey->width;i++)
        ;j<grey->height;j++)
            &&j!=)
                grey->imageData[j*grey->width+i]=bitrev(grey->imageData[j*grey->width+i]^grey->imageData[j*grey->width+i-]);
            else
                grey->imageData[]=grey->imageData[]^IV;
    cvNamedWindow("cbc");
    cvShowImage("cbc", grey);

效果图

原图

各加密模式的演示(ECB,CBC)

ECB(很明显的模式)

各加密模式的演示(ECB,CBC)

CBC(存在部分图像边界)

各加密模式的演示(ECB,CBC)

上一篇:python基于pillow库的简单图像处理


下一篇:Mac下Python和Pycharm之virtualenv