在 angular 2+ 中使用 MD5 加密 JSON 对象

using MD5 in angular 2+ to encrypt a JSON object

我目前正在使用 npm 的 "ts-md5" 实施加密。我已经编写了以下方式加密字符串的代码

import {Md5} from 'ts-md5/dist/md5';

const md5 = new Md5();
console.log(md5.appendStr('hello').end());

我可以使用什么 md5 function/mechanism 来加密我的以下 JSON 对象?

myObj = { "name":"John", "age":30, "car":null };

我的angular版本是5.2

正如@James 在评论中指出的那样,md5 是一种哈希算法,而不是加密算法(这意味着它是单向的,您无法将 md5 哈希解密回其原始数据)。哈希通常用于数据完整性。

忽略所有这些,要回答关于如何对对象进行 md5 散列的问题,您可以只使用 JSON.stringify(obj) 将对象转换为字符串表示,然后只对该字符串进行 md5 散列:

console.log(md5.appendStr(JSON.stringify(myObj)).end());

这样做的一个潜在缺点是从对象到 JSON 字符串的序列化顺序会影响输出的 md5 值,例如:

JSON.stringify({a:1, b:2})
"{"a":1,"b":2}"
JSON.stringify({b:2, a:1})
"{"b":2,"a":1}"

两个字符串将具有不同的 md5 哈希值,即使它们表示相同的对象内容