我有一個對象,我想在節點中用sha256散列。該對象的內容是簡單的Javascript類型。例如起見,讓我們說:從節點中的對象生成一致的sha256散列
var payload = {
"id": "3bab3f00-7d55-11e7-9b0a-4c32759242a5",
"foo": "a message",
"version": 7,
};
我創建這樣的哈希:
const crypto = require('crypto');
var hash = crypto.createHash('sha256');
hash.update(...).digest('hex');
的問題是,如何通過更新? documentation for crypto說你可以通過一個<string> | <Buffer> | <TypedArray> | <DataView>
,這似乎表明一個對象是不是一件好事情通過。我不能使用toString()
因爲打印"[object Object]"
。我可以使用JSON.stringify,但是我已經在其他地方閱讀過,stringify的輸出不能保證對於相同的輸入是確定性的。
還有其他的選擇嗎?我不想從NPM下載一個軟件包。
你能解釋你爲什麼這樣做嗎?這可能會提供如何的瑣碎想法。 – Paul
我想任何人都想散列任何東西......以創建對象內容的可重複摘要的相同原因:a)與對象的散列不同,並且b)難以僞造 –
因此,這是我找到的幾個npm模塊之一經過簡單的Google搜索。如果他們不滿足你的需求,他們可能會提出想法。 https://github.com/puleos/object-hash/blob/master/readme.markdown – Paul