Yodlee getMFAResponse用于Captcha的字节数组

时间:2016-03-31 04:13:00

标签: javascript encoding bytearray captcha yodlee

我正在尝试从Yodlee getMFAResponse(看起来像<openssl/opensslconf.h>等)返回的字节数组中创建一个编码字符串,以便我可以将它用作HTML中图像标记的源显示验证码。 (当试图获取金融机构的图像信息时,这似乎也是一个问题。)

为了实现这一点,我将字节数组从响应对象中取出,将其传递给[-1,0,2,-1],然后将其附加到以btoa()开头的字符串,其中???是文件类型。我尝试过bitmap,jpeg,png,gif等,但似乎都没有用。我也试过了魔法字符串&#39;确定格式的方法,但它不匹配我能找到的格式。我认为主要的问题是我不知道文件的格式,但也许我没有正确地进行解码。

我最终得到这样的东西:

data:image/???;base64,

我只在Javascript工作,无论是服务器端还是客户端,我不知道Java(这似乎是大多数Yodlee的答案都适合)。我不知道我对字节数组的解码是否是问题,或者我是否知道正确的图像格式。

1 个答案:

答案 0 :(得分:0)

我在js文件上尝试了你的Base64字符串。它没有显示图像。我无法访问btoa()的js代码。但是,我在这里粘贴我的工作代码,也许问题在于将byteArray转换为Base64。 (我正在使用c#,angularJS来使用Yodlee API。

 function _arrayBufferToBase64(biteArray) {
    var binary = '';
    var bytes = new Uint8Array(biteArray);
    var len = bytes.byteLength;
    for (var i = 0; i < len; i++) {
        binary += String.fromCharCode(bytes[i]);
    }
    return window.btoa(binary);
}

然后我在js文件中使用它来使用jQuery填充<IMG />

let captchaImage64 = _arrayBufferToBase64(mfaLoginForm.fieldInfo.image);
                let captchaImage = $('<img />', {
                    src: "data:image/png;base64," + captchaImage64,
                    class: "img img-responsive",
                    style: "margin:auto; max-width:250px; margin-bottom: 15px;"
                });

let captchaContainer = $('<div />', {
                    class: "form-group row",
                    id: "captchaContainer"
                });

captchaContainer.append(captchaImage);