【发布时间】:2018-06-14 03:31:48
【问题描述】:
我创建了自己的 hash.js 文件,该文件需要加密并导出两个使用加密的函数。当我散列密码时,它在我的 api.js 文件中运行良好。但是,现在我正在尝试将此文件导入到我的 user.service.ts 文件中,以便我可以将密码的散列版本作为查询参数而不是密码本身发送。当我尝试这样做时,我总是收到一个 TypeScript 错误,告诉我加密使用的函数不是函数。但是我仍然可以控制台记录我导入的对象,它对我来说看起来是合法的。我查看了 node_modules 文件夹中的其他 java 脚本文件,但看不到我的文件有任何问题。
我还发现似乎有一些我需要创建的定义文件,但我也多次尝试创建这样的文件,但似乎没有任何效果
几个小时的谷歌搜索和由于缺乏时间在这个项目上缺乏知识导致我这篇文章,这是我的第一个 stackoverflow 帖子,我希望它不是不清楚,我很高兴提供帮助我解决此问题所需的任何信息。
LoginComponent.html:18 ERROR TypeError: crypto.randomBytes is not a function
at Object.genRandomString (hash.js:12)
at UserService.loginUser (user.service.ts:82)
at LoginComponent.getUser (login.component.ts:54)
at LoginComponent.onSubmit (login.component.ts:44)
at Object.eval [as handleEvent] (LoginComponent.html:18)
at handleEvent (core.es5.js:12014)
at callWithDebugContext (core.es5.js:13475)
at Object.debugHandleEvent [as handleEvent] (core.es5.js:13063)
at dispatchEvent (core.es5.js:8607)
at core.es5.js:10775
LoginComponent.html:18 ERROR CONTEXT DebugContext_ {view: {…}, nodeIndex: 31, nodeDef: {…}, elDef: {…}, elView: {…}}
hash.js 文件
'use strict';
var crypto = require('crypto');
/**
* generates random string of characters i.e salt
* @function
* @param {number} length - Length of the random string.
*/
function genRandomString (length){
return crypto.randomBytes(Math.ceil(length/2))
.toString('hex') /** convert to hexadecimal format */
.slice(0,length); /** return required number of characters */
};
/**
* hash password with sha512.
* @function
* @param {string} password - List of required fields.
* @param {string} salt - Data to be validated.
*/
function sha512(password, salt){
var hash = crypto.createHmac('sha512', salt); /** Hashing algorithm sha512 */
hash.update(password);
var value = hash.digest('hex');
return {
salt:salt,
passwordHash:value
};
};
module.exports = {
genRandomString: genRandomString,
sha512: sha512
};
【问题讨论】:
-
可以粘贴错误代码吗?
标签: javascript node.js angular typescript