Hash
散列到素數?
素數是否有一些可證明安全的散列函式?
說,一個函式 $ H: {0, 1}^* \rightarrow {e: e \in {0, 1}^\lambda \land e $ 是素數 $ } $
我之所以問,是因為有些結構只能用於素數(例如CL02 Strong-RSA Dynamic Accumulators)。
您可以將雜湊值用作確定性 CSPRNG 的種子,然後使用素數生成器也用於 RSA 密鑰對生成。請注意,質數的大小必須相對較高(128 位安全性為 1536 位,例如 3072 位的 RSA 密鑰)。
確定性 RSA 密鑰對生成的常見警告適用。例如,算法必須保持相同,否則會為相同的雜湊值計算不同的素值。
通常,生成質數的方法可在執行時附帶的數學或加密庫中單獨使用。例如,Java 有
BigInteger(int bitLength, int certainty, Random rnd)
建構子。請注意,找到素數所需的時間事先是未知的。生成可能需要很長時間(在 Java 的情況下,也可能從 DRBG 中獲取荒謬的字節數 - 剛剛測試過)。