Chacha

具有 64 位整數的 ChaCha 作為帶有流的 PRNG

  • December 27, 2020

如果我使用 64 位整數而不是標準的 32 位整數,我可以使用四輪的 ChaCha 作為具有不同流的良好非加密 PRNG 嗎?我需要一個更大的狀態,這似乎是最簡單的方法。

BLAKEBLAKE2加密散列函式在HAIFA結構中使用 ChaCha 四分之一輪的修改版本。修改後的輪函式使用 64 位字長並調整了旋轉常數(BLAKE 為 32、25、16 和 11,BLAKE2 為 32、24、16 和 63)。您可能需要做的就是使用該原語來建構 64 位版本的流密碼,並根據需要增加輪數以實現充分擴散。當然,這種結構很容易被致命地破壞,你永遠不應該使用自己的加密貨幣。但是,如果非加密 PRNG 滿足您的所有隨機性要求,這似乎就足夠了。

如果您只需要一個非加密 PRNG,那麼您最好使用能夠在 64 位架構上表現良好的專用高速 PRNG,假設這是您希望對這些詞進行操作的主要原因尺寸。各種版本的XorShift應該符合要求。大種子狀態可以使用雜湊函式進行壓縮,因此無需修改算法。

JP Aumasson 基於 BLAKE2b(64 位)創建了 Blabla 生成器,與 Chacha/Salsa 非常相似。

在我的測試中,它似乎並不比連接兩個連續的 Chacha 輸出快得多。

https://github.com/veorq/blabla/blob/master/BlaBla.swift

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