我的任务是完成加密和解密文本的代码,并回答问题:
假设我们每秒可以测试10亿个加密密钥,那么测试所有可能的256位加密密钥需要多少年?
我不明白如何解决问题,因为我不明白你应该知道你正在测试多少加密密钥。您是否正在测试26个加密密钥,因为这是字母表中的字母数量?不会明显少于一秒 - 甚至不到一年?是" 256位"部分影响答案?
我不确定代码是否有助于回答这个问题,但如果是这样的话,就是它(如果输入的文本包含x,y或z,则此代码不起作用):
Looper.getMainLooper()
答案 0 :(得分:2)
256位是指密钥的长度,即它具有256位信息。一位可以是0或1。
如果我们有两位,我们可以代表2 ^ 2个数字:
0 0 = 0
0 1 = 1
1 0 = 2
1 1 = 3
随着我们增加位数,我们可以表示的数字增加2的幂。对于 n 位,我们可以表示 2 ^ n 可能的数字。< / p>
因此,在您的情况下,256位密钥可以表示2^256
个不同的值。
对于您的代码,凯撒密码是一种移位密码,可将值移动一定量。关键是字母表已被移动多少,因此有26个可能的键。很小。您需要做的就是测试每个可能的密钥,直到您获得相同的值。
答案 1 :(得分:1)
如果有256个不同的位,那么这意味着每个位有两种可能性。按照这个逻辑,我们可以清楚地看到计算机必须经历2 ^ 256种不同的可能性。使用每秒10亿个加密密钥的测量值,大约需要3 * 10 ^ 60年才能解码所有这些可能性,这超过了宇宙年龄的10 ^ 50倍。正因为如此,才能解密256位密钥。这也解释了为什么256位密钥比128位密钥更有效。 128位密钥具有2 ^ 128种可能性,而256位密钥具有2 ^ 256位密钥。
希望这有帮助!!!