【问题标题】:crypto-js module is imported but does not work as expectedcrypto-js 模块已导入,但未按预期工作
【发布时间】:2019-10-10 08:36:55
【问题描述】:

我从事一个使用 typescript 和 es6 语法的项目。我已经安装了模块crypto-js npm install crypto-js和他的打字稿类型npm install @types/crypto-js

然后我将它导入到我的文件中:`

import * as CryptoJS from 'crypto-js';

但是当我尝试像在文档中那样使用它时:

console.log(CryptoJS.MD5('my message'));

它向我展示了一个对象结构而不是一个不可读的字符串:

WordArray.init {words: Array(4), sigBytes: 16}
sigBytes: 16
words: Array(4)
    0: -1952005731
    1: -1042352784
    2: 804629695
    3: 720283050
    length: 4
__proto__: Array(0)
__proto__: Object

我忘记了什么?

【问题讨论】:

    标签: node.js typescript import node-modules cryptojs


    【解决方案1】:

    在您的代码中,您引用了调用 MD5 函数的输出,该函数在传递给 typeof 时将其类型返回为“对象”。

    虽然文档似乎很少,但您可以使用以下方法获得 MD5 值的字符串表示:

    console.log(CryptoJS.MD5('my message').toString())
    

    产生:"8ba6c19dc1def5702ff5acbf2aeea5aa"

    如果您打算使用 NodeJS 运行您的代码,您可能会考虑使用它的原生 crypto 模块而不是 crypto-js

    const crypto = require('crypto')
    const h = crypto.createHash('md5')
    h.update('my message')
    console.log(h.digest('hex'))
    

    还打印:"8ba6c19dc1def5702ff5acbf2aeea5aa"

    在这里使用 NodeJS 的原生 crypto module 的好处是,与所有原生模块一样,它被捆绑到 NodeJS 运行时中,因此不需要从外部模块加载。

    【讨论】:

    • 非常感谢您的回答,我没想到对于这样一个下载的项目,文档会这么差。无论如何,我使用本机模块遵循您的建议。
    猜你喜欢
    • 2020-07-24
    • 2020-05-31
    • 1970-01-01
    • 1970-01-01
    • 2017-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多