Yodlee getMFAResponse 验证码字节数组
Yodlee getMFAResponse Byte Array for Captcha
我正在尝试从 Yodlee getMFAResponse(看起来像 [-1,0,2,-1]
等)返回的字节数组创建一个编码字符串,以便我可以将它用作 HTML 以显示验证码。 (在尝试获取金融机构的图像信息时,这似乎也是一个问题)。
为此,我将字节数组从响应对象中取出,将其传递给 btoa()
,然后将其附加到以 data:image/???;base64,
开头的字符串,其中 ???是文件类型。我试过位图、jpeg、png、gif 等,但 none 似乎有效。我也试过 'magic string' 方法来确定格式,但它没有匹配我能找到的格式。我认为主要问题是我不知道文件的格式,但也许我只是没有正确解码。
我最终得到这样的结果:
data:image/jpeg;base64,NjYsNzcsNTgsMTE2LDAsMCwwLDAsMCwwLDU0LDAsMCwwLDQwLDAsMCwwLC05MSwwLDAsMCw0NSwwLDAsMCwxLDAsMzIsMCwwLDAsMCwwLDQsMTE2LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLC0xLC0xLC0xLDAsLTEsLTEsLTEsMCwtMSwtMSwtMSwwLC0xLC0xLC0xLDAsLTEsLTEsLTEsMCwtMSwtNSwtMSwwLC0xLC0xLC0xLDAsLTksLTksLTksMCwtMSwtNSwtMSwwLC0xLC0xLC0xLDAsLTEsLTUsLTEsMCwtMTcsLTE3LC0xNywwLC0xLC0xLC0xLDAsLTEsLTEsLTEsMCwtMSwtMSwtMSwwLC05LC0xMywtOSwwLC0xLC0xLC0xLDAsLTEsLTEsLTEsMCwtMSwtMSwtMSwwLC0xLC0xLC0xLDAsLTEsLTEsLTEsMCwtMSwtMSwtMSwwLC0xLC0xLC0xLDAsLTEsLTEsLTEsMCwtMSwtMSwtMSwwLC05LC05LC05LDAsLTEsLTEsLTEsMCwtMSwtMSwtMSwwLC0xLC0xLC0xLDAsLTEsLTEsLTEsMCwtMTcsMCwtMSwtMSwtMSwwLC0xLC0xLC0xLDAsLTEsLTEsLTEsMCwtMSwtMSwtMSwwLC0xLC0xLC0xLDAsLTEsLTEsLTEsMCwtMSwtMSwtMSwwLC0xLC0xLC0xLDAsLTEsLTEsLTEsMCwtMSwtMSwtMSwwLC0xLC0xLC0xLDAsLTEsLTEsLTEsMCwtMSwtMSwtMSwwLC0xLC0xLC0xLDAsLTEsLTEsLTEsMCwtMSwtMSwtMSwwLC0xLC0xLC0xLDA='
我只在 Java 脚本中工作,包括服务器端和客户端,我不知道 Java(这似乎是大多数 Yodlee 答案所针对的)。我不知道是我对字节数组的解码有问题,还是我不知道正确的图像格式。
我在我的 js 文件中尝试了你的 Base64 字符串。它没有显示图像。我无法访问 btoa()
的 js 代码。但是,我在这里粘贴了我的工作代码,也许问题在于将 byteArray 转换为 Base64。 (我正在使用 Yodlee API 使用 c#,angularJS)。
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 文件中使用它来填充 <IMG />
使用 jQuery:
的方式
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);
我正在尝试从 Yodlee getMFAResponse(看起来像 [-1,0,2,-1]
等)返回的字节数组创建一个编码字符串,以便我可以将它用作 HTML 以显示验证码。 (在尝试获取金融机构的图像信息时,这似乎也是一个问题)。
为此,我将字节数组从响应对象中取出,将其传递给 btoa()
,然后将其附加到以 data:image/???;base64,
开头的字符串,其中 ???是文件类型。我试过位图、jpeg、png、gif 等,但 none 似乎有效。我也试过 'magic string' 方法来确定格式,但它没有匹配我能找到的格式。我认为主要问题是我不知道文件的格式,但也许我只是没有正确解码。
我最终得到这样的结果:
data:image/jpeg;base64,NjYsNzcsNTgsMTE2LDAsMCwwLDAsMCwwLDU0LDAsMCwwLDQwLDAsMCwwLC05MSwwLDAsMCw0NSwwLDAsMCwxLDAsMzIsMCwwLDAsMCwwLDQsMTE2LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLC0xLC0xLC0xLDAsLTEsLTEsLTEsMCwtMSwtMSwtMSwwLC0xLC0xLC0xLDAsLTEsLTEsLTEsMCwtMSwtNSwtMSwwLC0xLC0xLC0xLDAsLTksLTksLTksMCwtMSwtNSwtMSwwLC0xLC0xLC0xLDAsLTEsLTUsLTEsMCwtMTcsLTE3LC0xNywwLC0xLC0xLC0xLDAsLTEsLTEsLTEsMCwtMSwtMSwtMSwwLC05LC0xMywtOSwwLC0xLC0xLC0xLDAsLTEsLTEsLTEsMCwtMSwtMSwtMSwwLC0xLC0xLC0xLDAsLTEsLTEsLTEsMCwtMSwtMSwtMSwwLC0xLC0xLC0xLDAsLTEsLTEsLTEsMCwtMSwtMSwtMSwwLC05LC05LC05LDAsLTEsLTEsLTEsMCwtMSwtMSwtMSwwLC0xLC0xLC0xLDAsLTEsLTEsLTEsMCwtMTcsMCwtMSwtMSwtMSwwLC0xLC0xLC0xLDAsLTEsLTEsLTEsMCwtMSwtMSwtMSwwLC0xLC0xLC0xLDAsLTEsLTEsLTEsMCwtMSwtMSwtMSwwLC0xLC0xLC0xLDAsLTEsLTEsLTEsMCwtMSwtMSwtMSwwLC0xLC0xLC0xLDAsLTEsLTEsLTEsMCwtMSwtMSwtMSwwLC0xLC0xLC0xLDAsLTEsLTEsLTEsMCwtMSwtMSwtMSwwLC0xLC0xLC0xLDA='
我只在 Java 脚本中工作,包括服务器端和客户端,我不知道 Java(这似乎是大多数 Yodlee 答案所针对的)。我不知道是我对字节数组的解码有问题,还是我不知道正确的图像格式。
我在我的 js 文件中尝试了你的 Base64 字符串。它没有显示图像。我无法访问 btoa()
的 js 代码。但是,我在这里粘贴了我的工作代码,也许问题在于将 byteArray 转换为 Base64。 (我正在使用 Yodlee API 使用 c#,angularJS)。
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 文件中使用它来填充 <IMG />
使用 jQuery:
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);