流密码和分组密码有什么区别?正如在块密码中,数据在chuck中,而在流密码中,逐位加密,那么流密码中有多少数据作为输入?
流密码中的流指的是密钥,而不是数据。在分组密码中,密钥一次加密一个数据块(通常为8或16字节),通常使用密码模式从一个块到另一个块修改密钥。在流密码中,使用某种机制来生成密钥流,然后数据通常只与密钥流进行XOR运算。密钥流可以是发送者和接收者事先已知的一次性密码,或者是发送者和接受者已知初始状态的随机数生成器的输出。甚至大多数块密码都可以在CTR或OFB模式下使用,因此它们有效地成为流密码。
为什么要使用流密码?最后的运算是一个简单的异或运算,速度非常快。密钥流可以独立计算,甚至可以预先计算。因此,流密码在需要实时加密的地方很流行,例如加密电话。
为什么不使用流密码呢?最后的操作是一个简单的XOR,这意味着攻击者可以利用密钥流中的规则模式。必须小心确保密钥流永远不会重复,使用一次使用的数字和其他机制来确保唯一性。对于块密码,这个条件并不那么重要:虽然在CBC模式中,随机初始化向量是首选,但常数IV并不像流密码中那样危险。