Библиотека синтаксического анализатора строк EMVCo TLV для Javascript - PullRequest
0 голосов
/ 19 сентября 2018

Я хочу проанализировать строку TLV и получить значение, когда я даю значение тега.

Образец:

000201021642333310011114235204546757034445802IN5910Моя компания6005Vegas6304bb02

1006 * *1007* 10068 *1007* 10068 *1007* 10068 *1007* 10068 *1007* 10068 *1007* 10068 *1007* 10068 *1007* 10068 *1007* 10068по правилам TLV тег 52 даст значение 5467, 57 будет 333.

Ответы [ 2 ]

0 голосов
/ 09 октября 2018
var str = '000201021642333310011114235204546757034445802IN5910My Company6005Vegas6304bb02';
var headerLength = 6; // assuming header length is always 6
var header = str.substring(0, 6);

var tags = [];

// start after header
var i = 6;
while (i < str.length) {
    var tag = str.substring(i, i + 2);
    i += 2;
    var valueLength = Number(str.substring(i, i + 2));
    i += 2;
    var value = str.substring(i, i + valueLength);
    i += valueLength;
    tags.push({tag: tag, value: value});
}
0 голосов
/ 20 сентября 2018

Это не пример кодирования BER-TLV, используемый EMV.Ваш пример данных представляет значения тегов как String / ASCII вместо двоичных.

Так что вам нужен собственный анализатор данных, где:

  • Tag - 2 символа, это настраиваемые теги, а не EMV;
  • Длина - в десятичном виде , 2 символа;
  • Значение - в ASCII с указанной десятичной длиной;

ЭтоФормат более простой по сравнению с реальным BER TLV, но вам нужно разработать собственную функцию.

Результат разбиения будет:

000201 // some header
02 16 4233331001111423
52 04 5467
57 03 444
58 02 IN
59 10 My Company
60 05 Vegas
63 04 bb02
...