Хешировать / шифровать массив объектов - PullRequest
0 голосов
/ 28 марта 2020

Как мне создать ха sh, как в SHA-256, из массива объектов? Я попробовал несколько способов, но не могу заставить их работать.

Я хочу проверить, изменились ли данные, сравнивая хеши до и после.

let data = [
  {foo: "foo", bar: "bar", baz: "baz"},
  {foo: "foo", bar: "bar", baz: "baz"},
  {foo: "foo", bar: "bar", baz: "baz"},
];

hash(data) // 487f7b22f68312d2c1bbc93b1aea445b

data[0].foo = "changed";

hash(data) // 7663d8c57a4fe7d83db6bbc1bff52586

Ответы [ 2 ]

1 голос
/ 28 марта 2020

Это не сработало, потому что я передавал объект, а не строку.

const SHA256 = require("crypto-js/sha256");

let data = [
  { foo: "foo", bar: "bar", baz: "baz" },
  { foo: "foo", bar: "bar", baz: "baz" },
  { foo: "foo", bar: "bar", baz: "baz" },
  { foo: "foo", bar: "bar", baz: "baz" }
];

let foo = JSON.stringify(data);

console.log(SHA256(foo).toString());
0 голосов
/ 28 марта 2020

Вы в значительной степени сделали это.

let dataHash1 = hash(data);
data[0].foo = "changed";
let dataHash2 = hash(data);

let isChanged = false;
if (dataHash2 === dataHash2) {
  isChanged = true;
}

Переменная isChanged будет истинной, если ваши данные изменились, и ложной, если ваши данные останутся прежними.

...