使用加密的密码获取

时间:2019-04-04 13:15:29

标签: javascript fetch cryptojs

我正在尝试通过提取向API进行身份验证。为此,我使用了加密的用户名和密码。问题是,无论我做什么,从API获得的响应都是我的密码无效。我知道该密码有效,因为它是由管理员提供的。

这是我正在使用的代码:

import CryptoJS from 'crypto-js';
import CryptoJSAesJson from './helpers/helpers';

var username = 'myusername';
var pass = 'mypassword';
var hash = CryptoJS.SHA1(username).toString();
var password = CryptoJS.AES.encrypt(JSON.stringify(pass), 'mypassphrase', {format: CryptoJSAesJson}).toString();
var credentials = {
    user: hash,
    password: password
}

fetch("https://demo.mediainfo.com/api/user/login", {
    body: JSON.stringify(credentials),
    headers: {
        "Content-Type": "application/json"
    },
    method: "POST"
}).then(response => {
    // do something with the response
});

在helpers.js上,我有以下代码:

var CryptoJSAesJson = {
    stringify: function (cipherParams) {
        var j = {ct: cipherParams.ciphertext.toString(CryptoJS.enc.Base64)};
    if (cipherParams.iv) j.iv = cipherParams.iv.toString();
    if (cipherParams.salt) j.s = cipherParams.salt.toString();
        return JSON.stringify(j).replace(/\s/g, '');
    },
    parse: function (jsonStr) {
        var j = JSON.parse(jsonStr);
        var cipherParams = CryptoJS.lib.CipherParams.create({ciphertext: CryptoJS.enc.Base64.parse(j.ct)});
        if (j.iv) cipherParams.iv = CryptoJS.enc.Hex.parse(j.iv);
        if (j.s) cipherParams.salt = CryptoJS.enc.Hex.parse(j.s);
        return cipherParams;
    }
}

export default CryptoJSAesJson;

不幸的是,API文档为空,所以我不确定可能是什么问题,获取时我收到的唯一消息是:“密码交换错误。请与管理员联系。”

谢谢!

0 个答案:

没有答案