Passwords

使用 32 個十六進制數字與 ASCII 等效的 16 個字元密碼

  • September 6, 2017

假設我使用加密算法偽隨機生成指定為 16 個字元長的字元串。加密文件時,該字元串將用作密碼。

因此,例如字元串是:

Z±¨Û‹'bó£´µ¼

該字元串的十六進制等價物是:

0x5AB1A81CDB8B279D62F3A3B405B51DBC

從密碼學上講,任一變體*“更強”嗎?*換句話說,如果我使用字元串作為密碼,或者如果我將十六進制數字轉換為字元串並使用它作為密碼,是不是更好?

他們都是平等的。

密碼片語的安全性基於密碼片語包含的熵量。在您的情況下,您的兩條數據僅在編碼方面有所不同。它們包含的實際熵是相同的。

您正在生成一個 16 字節長的秘密(假設隨機源確實是隨機的)。所以它有 128 位的熵。

我應該注意,這個答案假設*“密碼學”*。但是,以 UTF-8 或 ASCII 編碼您的密碼可能(在實踐中)搞砸您的數據。其他答案很好地解釋了原因

更新: fgrieu 正確地指出,這個答案假設密碼中的所有熵都被實際使用了。不是這種情況的一個範例是,當您生成一個 256 位密鑰時,您可以從中派生一個用於 128 位 AES 加密的 128 位密鑰。這裡熵減少到 128 位。

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