11

javax.smartcardio を使用してスマートカード (ドイツ語 Gesundheitskarte ) を読み込もうとしています

EF「PD」の定義では、その長さは 850 バイトと指定されています。コンテンツは、ここで指定されているように、gzip で圧縮された ISO5589-15 でエンコードされた XML 文字列である必要があります

私が送る CommandAPDU として

00 B0 00 00 00

最初の 256 バイトを取得します。送信後

00 B0 00 FF 00

次の 256 バイトを取得します。

しかし、どうすれば残りを手に入れることができますか?

バイナリ データがいつ終了するかを知るにはどうすればよいですか?

ドイツ仕様第 1 部| ドイツ仕様パート 2

4

5 に答える 5

1

より大きなファイルの読み取りに関する Maarten Bodewes による IMO の非常に役立つ回答への小さな追加と、拡張 Le を使用するための stajo による提案。これにより、他の人の時間と労力が節約されることを願っています。

長い読み取りに Le を使おうとするのはトリッキーです:

  • 拡張 Le では、拡張 Lc も使用する必要があります。
  • 標準によれば、拡張 Lc を 0 にすることはできないため、オフセット 0 から開始することはできません。
  • Lc が 0 でない場合は、「B1」INS を使用する必要があります。
  • Maarten Bodewes 氏が説明したように、B1 では正しいサイズの計算が少し複雑になります。

それに加えて、カードが拡張 Lc/Le をサポートしているかどうかを最初に確認する必要があります。これに関する情報は、ATR 履歴バイト、EF.ATR、および現在の EF 情報に分散されます。

そのため、理論上は 1 つのファイルから大量のデータを読み取ることは可能ですが、実際には多大な労力が必要であり、1 つのコマンドでファイル全体を読み取ることもできません。

読み取りに拡張 Le を使用する前に、上記を考慮してください。

于 2015-08-31T14:29:22.357 に答える
0

カードがサポートしている場合は、おそらく拡張長形式を使用できます。lc/le フィールドに 00 を指定すると、長さとして次の 2 バイトを使用できます

于 2013-08-09T11:08:19.610 に答える