Rsa
如何為 RSA 生成大素數?
目前用於生成用於 RSA 加密的大素數的行業標準算法是什麼?
我知道我可以在 Internet 上找到任何數量的文章來解釋 RSA 算法如何加密和解密消息,但我似乎找不到任何文章來解釋用於生成
p
和q
大而不同的算法該算法中使用的素數。
生成大素數的標準方法是採用所需長度的預選隨機數,應用費馬測試(最好使用基數) $ 2 $ 因為它可以針對速度進行優化),然後應用一定數量的Miller-Rabin 測試(取決於長度和允許的錯誤率,例如 $ 2^{-100} $ ) 得到一個很可能是素數的數字。
預選是通過小素數(最多幾百個)的測試劃分或考慮到形式的許多素數候選者通過篩選出高達 10,000 - 1,000,000 的素數來完成的 $ b+2i $ ( $ b $ 大的, $ i $ 最多幾千)。
據我所知, AKS的確定性素數測試尚未使用,因為它速度較慢,並且由硬體引起的計算錯誤可能高於 $ 2^{-100} $ .
大多數智能卡都為模數運算提供協處理器,模數從 1024 到幾千位不等。製造商通常還提供用於使用協處理器生成 RSA 和 RSA 密鑰的庫。