Aes
在 24 位密鑰下暴力破解 AES-128 需要多長時間
我有 1 塊使用 AES-128 的加密數據,但我知道 128 位中的 104 位是密鑰。
在 Intel I 7 CPU 上暴力破解 24 位密鑰需要多長時間?我該如何計算呢?
我有一個
Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz
. 英特爾 I7 大約有10 代可言。如果不提供實際引用的 Intel I7,則結果無法準確。這是方法;
執行
openssl speed -evp aes-128-cbc
命令。這將為您提供指標。我的 CPU 輸出:
aes-128-cbc for 3s on 16 size blocks: 144516288 aes-128-cbc's in 3.00s
,那是 $ 144516288 = 2^{27.1066568628459} $ . 因此 1 秒綽綽有餘。
$$ \begin{array}{|c|r|r|} \hline 2^i & \text{seconds} & \text{years} \ \hline 2^{30} & 22.29 & 0.0000007\ \hline 2^{40} & 22824.65 & 0.0007\ \hline 2^{50} & 23372450.03 & 0.74\ \hline 2^{60} & 23933388835.87 & 758.92\ \hline \vdots & \vdots & \vdots \ \hline 2^{128} & 7.06388957874987e30 & 2.23994469138441e23\ \hline \end{array} $$
下面的程式碼(在 SageMath 中測試)
SecondsInADay = 86400 SecondsInAYear = 31536000 TotalCBCin3Sec = 144516288 #your CPU time from openssl speed -evp aes-128-cbc power = (30,40,50,60,128) for i in power: print('seconds for 2^{%d} =' % (i),end="") print(((2^i *3.0)/TotalCBCin3Sec).str(no_sci=2)) for i in power: print('years for 2^{%d} =' % (i),end="") print(((2^i *3.0)/TotalCBCin3Sec/SecondsInAYear).str(no_sci=2))