Sha-512
將最高有效字節放在首位的目的是什麼?
當 SHA 算法聲明“一個 128 位的塊被附加到消息中。這個塊被視為一個無符號的 128 位整數(最高有效字節在前)
$$ emphasis added $$並包含原始消息的長度(在填充之前)$$ , $$“將最高有效字節放在首位的目的是什麼? 例如,如果我們有一個整數 24,即 00011000,因此我們需要 15 個字節的 0 來完成我們的 128 位塊,這是否意味著 00011000 首先出現,然後是 15 個字節的 0?看來這一定是他們說的。
我只是很困惑為什麼這個字節需要放在第一位……
資料來源:Network Security Essentials(第 6 版),William Stallings,p。72
指定這個的目的是有些機器是 big-endian ,有些是 little-endian。換句話說,一些電腦在內部表示整數,因此最重要的數字在前,就像我們的人類編號系統所做的那樣,而其他電腦體系結構則先儲存最不重要的字節。不指定此值將導致這兩種類型的電腦得出非常不同的答案,因此 SHA 算法明確指定了它使用的整數的記憶體佈局以避免歧義。
在您的範例中,15 個字節的零將在左側,因為這些字節是最重要的(在十進制中,它相當於寫入
0024
而不是24
)。如果他們指定 little-endian 順序,0001100
則將首先出現,因為那些是最不重要的字節(同樣對於十進制,這就像 write4200
,它仍然被解釋為十進制值 24,只是表示不同)。