所以我就翻過測試向量的這個列表來測試SHA1執行的有效性(你可以找到在http://csrc.nist.gov/groups/STM/cavp/secure-hashing.html底部)SHA1面向比特的測試向量給出下OpenSSL的錯誤消化
大部分的測試向量稱爲「短」(因爲它們的大小小於塊大小),通過。但是,對於所有較長的測試向量,openssl會輸出與預期不同的摘要。
實施例:
Msg = d372b4bf97daa3be77e0d78c123c7bb39dde10c82824c83f2250308320391247da419a167686b7320a5dc49b5cfc686eec76bb7034edaaeb2e029cb91791569e739c1bdb518418ffd07f0001e0
Expected MD = c60a02fffa45deccb075e386be3aa9313c2df4f2
Openssl output = 77 2d ff f3 54 31 2c df 93 e1 94 2f 10 91 f7 f8 78 61 91 c1
N.B:測試向量被用於面向比特的方面取得。我的理解是,這種實現可以計算消息的摘要,其大小不一定是字節倍數。
任何人都知道爲什麼會發生這種情況?
是的,我明白了,謝謝澄清。但我無法弄清楚爲什麼'd372b4bf97daa3be77e0d78c123c7bb39dde10c82824c83f2250308320391247da419a167686b7320a5dc49b5cfc686eec76bb7034edaaeb2e029cb91791569e739c1bdb518418ffd07f0001e0'使用BIT-only實現和僅BYTE的實現之間有什麼區別?這裏描述的不是同一個過程嗎? http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.198-1.pdf –
換句話說,僅有位實現的摘要和僅有字節的實現的摘要之間有什麼區別,應用於相同的任意長度輸入? –