Encryption
如何計算安全算法的密鑰大小?
有很多安全算法。衡量密碼算法安全性的方法之一是找出它的密鑰大小。單個算法有許多密鑰大小。
ECC(橢圓曲線密碼學)有 163、256、384、512 等。
RSA 有 1024、3072、7680、15360。我從這裡找到了這個
但是如何計算算法的密鑰大小?單個算法如何具有不同的密鑰大小?
我正在建構一個簡單的加密算法,但我不知道如何計算我的算法的密鑰大小。
我的算法是通過程式碼更改純文字的字母假設
a=2H, b=3C, c=8S ......, z=6D
如果明文是“cb”,那麼密文就是“8S3C”。那麼這個算法的密鑰大小是多少呢?我該如何計算呢?
有很多安全算法。衡量密碼算法安全性的方法之一是找出其密鑰大小。單個算法有許多密鑰大小。但是如何計算算法的密鑰大小?單個算法如何具有不同的密鑰大小?
沒有標準化的方法可以幫助您。找出適用的密鑰大小的最佳方法是查找算法應遵守的標準。此外,實施可能會進一步限制這些大小。如果您不走運,他們甚至可能會擴展輸入/輸出參數的可能大小(包括密鑰大小)。
讓我們來看看:
- RSA:任何密鑰大小都可以(從一個非常低的最小值開始),但通常密鑰大小應該是 8 位的倍數,並且可能是特定大小或更高(例如 > 1024 位);
- DH:密鑰大小由兩個數字組成,其中組的大小對安全性最重要 - 指定密鑰大小是困難的;
- AES:AES 具有 128、192 和 256 位的密鑰大小,並且輪數會因不同的密鑰大小而變化。AES 是 Rijndael 的子集,其密鑰大小為 128、160、192、224 和 256。實現 Rijndael 的 .NET 類僅支持 AES 密鑰大小(但更多塊大小);
- Blowfish 具有 32 位到 448 位的可配置密鑰大小,步長為 8 個;
- 3DES 的密鑰大小總共為 128 位或 192 位,但沒有奇偶校驗位的實際密鑰大小分別為 112 位和 168 位。實際有效的安全性分別約為 63-80 和 112 位。
這清楚地向您展示了密鑰大小是一個棘手的主題。
我的算法是通過程式碼更改純文字的字母假設
a=2H, b=3C, c=8S ......, z=6D
密鑰大小是您定義的密鑰大小。您可以將字元串定義為您的鍵,給定您的
2H3C8S ...... 6D
總鍵空間 $ 10^{26} $ (對於程式碼中的數字)次 $ 26^{26} $ (對於程式碼中的字母)。然後以位為單位的密鑰大小是 $ \log^2({10^{26} \times 26^{26}}) $ 或 20902 位 (!)。顯然,實際的密鑰大小要小一些,因為您不應該重複程式碼(就像不計算 DES 的奇偶校驗位一樣)。有效密鑰大小當然大約為零,因為這不是安全的現代密碼。