首页 > 解决方案 > 加密包问题数据必须是使用加密的字符串或缓冲区

问题描述

    TypeError: Data must be a string or a buffer
        at Hmac.update (crypto.js:99:16)
        at sha512 (/home/tomasomalley/deferProjects/FinalYearAppliedProjectGMIT/quiz-backend/src/index.js:20:10)

以上是我试图创建用户密码哈希的包中的错误

var crypto = require('crypto');



// Password Ulitlities
// Function creates random salt for password
var genRandomString = function(length){

    return crypto.randomBytes(Math.ceil(length/2))
    .toString('hex')
    .slice(0,length);
};

var sha512 = function(password,salt) {

    var hash = crypto.createHmac('sha512',salt);
    hash.update(password);
    var value = hash.digest('hex');
    return {
        salt:salt,
        passwordHash:value
    };
};
    
function saltHashPassword(userPassword) 
{

    var salt = genRandomString(16);
    var passwordData = sha512(userPassword,salt);
    return passwordData;
}

function checkHashPassword(userPassword,salt)
{
    var passwordData = sha512(userPassword,salt);
    return passwordData;
}   

上面是 index.js 代码。我尝试了 crpyto 的 npm 更新,但问题仍然存在,任何帮助

标签: androidnode.jskotlinhashpasswords

解决方案


推荐阅读