我目前正在爲「定製」嵌入式設備實現SHA256散列算法。 顯然,我有一個消息填充問題。 我寫的例程不適用於消息,其大小爲正好等於512位。SHA256:填充512位長度的消息
在這種情況下,應該如何填充消息? 即
M = "AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPP"
Z.
我目前正在爲「定製」嵌入式設備實現SHA256散列算法。 顯然,我有一個消息填充問題。 我寫的例程不適用於消息,其大小爲正好等於512位。SHA256:填充512位長度的消息
在這種情況下,應該如何填充消息? 即
M = "AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPP"
Z.
即使它開始作爲正好512位,你仍然需要墊的消息。
FIPS 180-4,§5.1.1如下解釋它:
假設消息,M的長度爲L比特。在消息結尾附加位「1」,接着是k個零位,其中k是等式L + 1 +k≡448mod 512的最小非負解。然後附加與使用二進制表示表示的數字L相等的64位塊。
[I取代L
對沒有正確地顯示字符]
對於數據是塊的大小PKCS#的整數倍7填充說必須添加填充的塊與每個字節設置爲填充字節數。在AES的情況下,塊大小爲16個字節,因此每個添加值爲0x10的16個字節。
注:PHP的mcrypt不做PKCS#7填充,它必須由用戶代碼來完成。
我試過了。但是我沒有得到預期的結果。 您能否詳細說明填充塊的六進製表示? – Zyend
通過所有測試的實現如何通過它? http://codereview.stackexchange.com/q/13288/489 –