java 加密模式

来源:互联网 发布:听歌软件版权 编辑:程序博客网 时间:2024/05/17 06:46
 

常见加密模式介绍:

ECB(Electronic Code Book:电码本)

 ECB是最简单的模式,同样的明文分组总是加密成相同的密文分组。这对于发送单一的块数据来说是非常好的,如密钥。但对执行一个加密的信息流来说不是很好,因为如果相同的明文多次发送以后,同样的密文也会被多次发送。
ECB最大的弱点是对每一个块用相同的方式进行加密。如果我们的密钥或者数据不断发生变化,ECB是完全安全的。但是如果类似的块经过同样的密钥加密发出以后,攻击者可能获得一些我们并不想让别人知道的信息。

CBC(Cipher Block Chaining:密码分组链接)  
CBC模式改变了加密方式,同样的明文分组不一定加密或解密同样的密文块,因此解决了ECB存在的主要问题。CBC使用前一分组的信息加密当前分组。因此和ECB模式大不相同。这个方法依然存在问题,那就是相同的信息仍然加密成相同的密文,因为所有的分组是同时变成密文分组的。为了解决这个问题,我们引入一个Initialization Vector(初始化向量),也就是前不久有人问到的IV问题。IV仅仅是一个初始化加密程序的随机数。它无需秘密保存,但队每一个信息来说它都是不同的,通过这个方式,即使有两条相同的信息,只要他们有不同的IV,那么他们加密后的密文也是不同的。从这个意义上来说,初始化向量无疑就和口令加密过程中使用的盐值是一样的。
CBC很适合文本传输,但它每一次都需要传送一个完整的数据块,一般选8个字符。

CFB(Cipher FeedBack:密码反馈)  
CFB的工作方式与CBC类似,但它可以执行更小的数据块,典型的有8位,这非常适合加密像聊天对话这样的信息,因为每次可以发送单一的字节数据块。
和CBC一样,CFB也需要一个IV,且相同及钥发送的每条信息的IV都必须是唯一的。

OFB(Output FeedBack:输出反馈)

 OFB除了在传输中能给数据提供更好的保护,防止数据丢失外,其他和CFB类似。密文中一位出错,也只造成明文中的一位出错,其他的方式会造成整个块丢失。

 

原创粉丝点击