A和B希望进行非即时通讯。为了保密,他们希望消息传送后即失效,不能被包括A和B在内的任何人阅读第二次,因此他们设计了如下方法:
1.A和B在线下约定一个正整数n作为初始通讯的密钥值。
2.通讯前,A先将密钥作为伪随机的种子将密钥刷新k次,将刷新后的种子作为新密钥进行加密,并在密文中写入校验数据,将密文传送给B,不传输密钥。
3.B在接收密文后,从上一次通讯使用的密钥开始,重复刷新密钥并尝试解密,直到解密与A传送的校验数据一致。
4.两人都将刷新后的密钥存储作为新的密钥。下次通讯时,只需再从第2步开始。旧有的密钥不保留。
由于随机数不能往前逆推,这种通讯方法实现了任何人都只能获得最后一次通讯的数据,而不能获得历史数据。数据在下一次通讯后即失效。
(0≤n≤1010,10≤k≤1000)