Passwords
使用 32 個十六進制數字與 ASCII 等效的 16 個字元密碼
假設我使用加密算法偽隨機生成指定為 16 個字元長的字元串。加密文件時,該字元串將用作密碼。
因此,例如字元串是:
Z±¨Û‹'bó£´µ¼
該字元串的十六進制等價物是:
0x5AB1A81CDB8B279D62F3A3B405B51DBC
從密碼學上講,任一變體*“更強”嗎?*換句話說,如果我使用字元串作為密碼,或者如果我將十六進制數字轉換為字元串並使用它作為密碼,是不是更好?
他們都是平等的。
密碼片語的安全性基於密碼片語包含的熵量。在您的情況下,您的兩條數據僅在編碼方面有所不同。它們包含的實際熵是相同的。
您正在生成一個 16 字節長的秘密(假設隨機源確實是隨機的)。所以它有 128 位的熵。
我應該注意,這個答案假設*“密碼學”*。但是,以 UTF-8 或 ASCII 編碼您的密碼可能(在實踐中)搞砸您的數據。其他答案很好地解釋了原因。
更新: fgrieu 正確地指出,這個答案假設密碼中的所有熵都被實際使用了。不是這種情況的一個範例是,當您生成一個 256 位密鑰時,您可以從中派生一個用於 128 位 AES 加密的 128 位密鑰。這裡熵減少到 128 位。