Hash

首先使用來自公鑰的 50 個字母作為使用者標識符?

  • August 25, 2020

我正在製作一個消息傳遞系統,使用者通過他們的公鑰來辨識。他們擁有哪個友好的使用者名並不重要,所以我不會提示他們選擇一個。每個使用者都會有一個目錄來保存他們的消息,所以如果屬於他們的目錄有一個短名稱會很好。即我不能通過使用他們的全部公鑰來創建一個非常大的目錄名稱(可能太長並且達到文件系統限制)。

我正在考慮使用,比如說,sha3_244(their_public_key)並考慮他們的主目錄名稱的雜湊值。

但後來我想,我如何取他們公鑰的第一個 50 字節,base32 對其進行編碼,並使用它而不是sha3_244校驗和?我應該擔心碰撞嗎?

我應該擔心碰撞嗎?

如果這些是 RSA 密鑰,是的,至少,如果人們發現與其他人發生衝突符合他們的利益。

生成 RSA 密鑰是完全可行的,其中模數的前 400 位是某個指定值。由於您使用這 400 位作為您的標識符,因此這意味著使用者可以選擇他們想要的任何標識符,例如,與另一個使用者相同的標識符。

這是否是一個問題取決於使用者是否真的會獲得優勢。

至於如何生成一個(比如 2048 位)RSA 密鑰,其中前 400 位是值 $ X $ ,這就是你要做的:

  • 選擇您的 1024 位素數 $ p $ 照常
  • 選擇一個素數 $ q $ 從範圍 $ 2^{2048-400}X / p < q < 2^{2048-400}(X+1) / p $ ; 在這麼大的範圍內會有很多素數。

很容易看出 $ pq $ 將是一個有效的 RSA 模數,前 400 位是值 $ X $ .

引用自:https://crypto.stackexchange.com/questions/83546