一次密码加密

时间:2019-04-29 21:25:45

标签: encryption one-time-pad

可以为数字实现一个时间密码吗?如果是,您能告诉我相同的算法或工作代码(最好是Java)吗?

而且,一次密码和异或密码之间有什么区别。

1 个答案:

答案 0 :(得分:0)

当(且仅当)以下假设成立时,OTP和您所描述的xor密码相同:

  • 您的密钥至少与明文一样大(换句话说:每个明文位至少有一个唯一的密钥位)
  • 您的密钥由相等分布的真实随机二进制数据组成
  • 您的密钥永远不会重复使用
  • 您的密钥被保密

这些都是很繁琐的假设

例如,如果您想加密DVD,则密钥也将与一个DVD一样大,必须将其安全地传输给接收者,而且密钥DVD只能用于此单个数据交换,并且可能永远不会重复使用

您可能不能简单地通过使用随机类来创建随机位... OTP要求真正的随机性...没有伪随机数生成器...甚至没有加密安全的生成器... OTP定义要求真正的随机性值...为什么连CSPRNG都不?因为OTP的强度是坚不可摧的...只要您依赖的不是真正的随机来源,总的加密强度就会从无穷降低到CSPRNG的加密强度...这可能是一种加密强度,相当好,但是很有限...可能会破坏它...对于真正的OTP,已经证明即使有无限资源,该系统从信息论的角度来看也是不可破坏的,这很了不起,因为它是具有此属性的唯一已知密码系统

对于我们通常的日常密码应用程序来说,OTP通常是不可行的,并且通常仅在您处理特殊情况时才使用,例如间谍与他/她工作的秘密机构之间的通信...

算法本身是众所周知的...

具有一个适用于以上所有假设的键

明文按位异或

完成