首页 > 解决方案 > NodeJs 和 Flutter 中的 Sha 256 不同

问题描述

crypto在 Node.js 中使用包并crypto在颤振中使用包。但是相同字符串的 Sha256 会导致不同的值。我不知道我做错了什么。

这是飞镖代码:

List<int> bytes1 = utf8.encode("abc-234-abc" + json.encode({
    "invoiceAmount": 3700.0,
    "notes": {
        "env": "np",
    }
})); // data being hashed
Digest digest1 = sha256.convert(bytes1);
 print(digest1)

这是 Node.js 代码:

const crypto = require('crypto')

crypto.createHash('sha256').update(`abc-234-abc`+JSON.stringify(
{
    "invoiceAmount": 3700.0,
    "notes": {
        "env": "np",
    }
})).digest('hex')

更新:我注意到 Flutter Web 似乎返回了在 Node.js 中生成的相同哈希值,但 Flutter Android 返回了不同的哈希值。这可能是 Java 和 Node.js 之间的区别。

标签: node.jsflutter

解决方案


推荐阅读