yxhxj2006

常用链接

统计

最新评论

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

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

ECB

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

缺点就是隐藏不了模式

 

Ecb encryption.png

CBC

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

有点就是比ECB好

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

 

C_i = E_K(P_i \oplus C_{i-1}), C_0 = IV

 

 

Cbc encryption.png




加密算法为简单的位翻转

 

  1. #define bitrev(b) (((b)<<7)&0x80) |  \   
  2.       (((b)<<5)&0x40) |  \  
  3.       (((b)<<3)&0x20) |  \  
  4.       (((b)<<1)&0x10) |  \  
  5.       (((b)>>1)&0x08) |  \  
  6.       (((b)>>3)&0x04) |  \  
  7.       (((b)>>5)&0x02) |  \  
  8.       (((b)>>7)&0x01)       
ECB加密,就是直接分块进行加密

 

 

  1. for(int i=0;i<grey->width;i++)  
  2.     for(int j=0;j<grey->height;j++)  
  3.         grey->imageData[j*grey->width+i]=bitrev(grey->imageData[j*grey->width+i]);  
  4. cvNamedWindow("ecb");  
  5. cvShowImage("ecb", grey);  


 

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

 

  1. for(int i=0;i<grey->width;i++)  
  2.     for(int j=0;j<grey->height;j++)  
  3.         if(i!=0&&j!=0)            
  4.             grey->imageData[j*grey->width+i]=bitrev(grey->imageData[j*grey->width+i]^grey->imageData[j*grey->width+i-1]);  
  5.         else  
  6.             grey->imageData[0]=grey->imageData[0]^IV;  
  7. cvNamedWindow("cbc");  
  8. cvShowImage("cbc", grey);  

posted on 2013-08-08 20:52 奋斗成就男人 阅读(454) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航: