4

EMV カードを読み取るためのスマートカード リーダーを開発しています。私は Mastercard カードに取り組んでおり、特定のレコードを読み取ろうとしていました。結果は読み取りに問題がないことを示していましたが、結果を解析すると、結果が Tag/Template-Length-Value 形式である TLV 標準に従っていないようです。返される結果のサンプルは次のとおりです。

70 - レコード応答タグの読み取り
81 - 長さを示す
必要があります e0 - タグ/テンプレートにする必要があります...?
8f -前の長さを示す必要があります。鬼ごっこ...?
01 05 9f 32 ... 90 00

私の問題は最初の数バイトです。最初のバイトはその READ RECORD テンプレートを示しますが、2 番目のバイトは長さを示し、3 番目のバイトは値である必要があります。これは次のタグの始まりです。しかし、E0 とラベル付けされた EMV タグがないため、結果を間違って翻訳したり、何かが欠けている可能性があります。同じコマンドを使用して以前のレコードを読み取ったところ、結果は問題なく表示されました: 70
- タグ
27
61 - 別のタグ/テンプレート インジケーターなど
25 4f 07 ... 90 00
または、これらの結果はどのように翻訳されますか?

4

2 に答える 2

2

ここでの長さは BER 形式でコード化されています。これは、81 が 1 つの長さのバイトが続くことを示していることを意味します (最大 7F までの長さのみを 1 バイトで直接コーディングできます)。そのため、E0 が長さで、8F がタグです。詳細については、参照してください。ISO 7816-4 (2005 年版では、5.2.2.2 BER-TLV 長さフィールドの章です)。最後の 90 00 は、もちろん読み取りが成功したことを示す SW1/SW2 です。

于 2014-11-13T08:25:54.513 に答える
1

guidot のように、TLV の長さコンポーネントは常に 1 バイトであるとは限りません。タグも同様です。応答をhttp://tvr-decoder.appspot.com/に貼り付けてみてください。最初のドロップダウンで TLV データを選択します。

EMV Book 3には、BER-TLV に関するセクションがあります。

于 2014-11-16T11:55:09.737 に答える