用于Javascript的EMVCo TLV字符串解析器库

时间:2018-09-19 08:38:36

标签: javascript node.js parsing tags tlv

我想解析TLV字符串并在提供标签值时获取值。

示例:

  

000201021642333310011114235204546757034445802IN5910我的   公司6005Vegas6304bb02

根据TLV规则,标记52将给出值5467,57将为333。

3 个答案:

答案 0 :(得分:1)

这不是EMV使用的BER-TLV编码示例。您的数据示例将“标记值”表示为String / ASCII而不是Binary。

因此,您需要自己的数据解析器,其中:

  • 标签-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

答案 1 :(得分:1)

Stream<Dish>

答案 2 :(得分:1)

例如,基于手动EMVco解析,我有一个QR内容(QR Indonesia Standard):00020101021226680016ID.CO.TELKOM.WWW011893600898025599662702150001952559966270303UMI51440014ID.CO.QRIS.WWW0215ID10200211817450303UMI520457325303360540825578.005502015802ID5916InterActive Corp6013KOTA SURABAYA61056013662130509413255111630439B7,因此我们可以像这样解析它:

var qris = '00020101021226680016ID.CO.TELKOM.WWW011893600898025599662702150001952559966270303UMI51440014ID.CO.QRIS.WWW0215ID10200211817450303UMI520457325303360540825578.005502015802ID5916InterActive Corp6013KOTA SURABAYA61056013662130509413255111630439B7'

var tags = [];

var i = 0;
while (i < qris.length) {
    var tag = qris.substring(i, i + 2);
    i += 2;
    var valueLength = Number(qris.substring(i, i + 2));
    i += 2;
    var value = qris.substring(i, i + valueLength);
    i += valueLength;
    tags.push({tag: tag, length: valueLength, value: value});
}

console.log(tags)

结果将是一个对象数组,如下所示:

[
  { tag: '00', length: 2, value: '01' },
  { tag: '01', length: 2, value: '12' },
  {
    tag: '26',
    length: 68,
    value: '0016ID.CO.TELKOM.WWW011893600898025599662702150001952559966270303UMI'
  },
  {
    tag: '51',
    length: 44,
    value: '0014ID.CO.QRIS.WWW0215ID10200211817450303UMI'
  },
  { tag: '52', length: 4, value: '5732' },
  { tag: '53', length: 3, value: '360' },
  { tag: '54', length: 8, value: '25578.00' },
  { tag: '55', length: 2, value: '01' },
  { tag: '58', length: 2, value: 'ID' },
  { tag: '59', length: 16, value: 'InterActive Corp' },
  { tag: '60', length: 13, value: 'KOTA SURABAYA' },
  { tag: '61', length: 5, value: '60136' },
  { tag: '62', length: 13, value: '0509413255111' },
  { tag: '63', length: 4, value: '39B7' }
]