4

カードに接続できたので、PINを確認する必要がありますが、確認を実行するためにどのコードを使用すればよいかわかりません。

// Verify PIN
//HERE IS WHAT I´M NOT SURE WHAT TO USE - Just an Example
byte[] pin = new byte[] { 0x31, 0x32, 0x33, 0x34, 0xFF, 0xFF, 0xFF, 0xFF };
APDUParam apduParam = new APDUParam();
apduParam.Data = pin;
apduVerifyCHV.Update(apduParam);
apduResp = iCard.Transmit(apduVerifyCHV);

7桁のPINを使用するスマートカードです。常に7桁です。

**Example:**
{CLA, INS, P1, P2, Lc, b1, b2, b3, b4, b5, b6, b7}

ここに、基本的な、、、、CLAバイトがあります。7桁のPINに+3バイトまたは6バイトを設定する必要があります。実際のPINまたは0xFF値になります。INSP1P2LC

Ex. {CLA, INS, P1, P2, Lc, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF} +7 Bytes

仕様では、8桁の最小と最大および最小4と最大12バイトの例を見つけました...

4

1 に答える 1

4

これは私が思ったよりも簡単です...

PINがパディング付きのASCII形式変換を使用する場合

入力されたPINは1357です(最小サイズ=4および最大サイズ=8桁)

  • •左揃え
  • •CCIDのデフォルトの表示動作
  • •CCIDはICCにコマンドを送信します

    CLA INS P1 P2 Lc 31 33 35 37 FF FF FF FF

PINがBCDの右揃えと制御フィールドを使用する場合

入力されたPINは13579です(最小サイズ=4および最大サイズ=8桁)

  • •正しい正当化。個人コードには8桁未満が含まれています。したがって、8桁のコードの最上位桁はゼロで埋める必要があります。
  • •フレームは、PIN変換の前に特定の制御フィールド「01」を統合します。
  • •メッセージなし
  • •CCIDはICCにコマンドを送信します

    CLA INS P1 P2 Lc 01 00 01 35 79

だから、私がしなければならなかったのは、適切な値を設定することだけでした。私の場合、左揃えでASCIIメソッドを使用しています。

0x00 0x20 0x00 0x01 0x08 0x30 0x31 0x34 0x37 0x34 0x31 0x30 0xFF

3-パディングを指します

3x-xは、指定された位置(左揃え)の実際のピン番号を指します。7桁のPINがあるため、使用されないバイトはデフォルトで0xFFになります。

それが誰かを助けることを願っています

于 2013-03-27T16:18:10.437 に答える