X9.24のルールに従ってPIN暗号化/復号化を行うコードをいくつか作成しました。これはANSIドキュメントで提供されている例でうまく機能しますが、クライアントからの実際のデバイスでは機能しません。
コードが正しいことを確認するために、コードを実行するためのサンプルデータはどこにありますか?
一部のデバイスメーカーがANSIをTに準拠していない可能性はありますか?
まあ、デバイスの製造元が仕様に準拠していない可能性は常にあります。 Stackoverflowで標準を実装する方法を尋ねる質問がありました( https://stackoverflow.com/questions/6071474/how-to-implement-ans-x9-24-dukpt-using-Java )そして、彼らはjPos: http://www.jpos.org/ を指しています。テストデータが含まれているようです。
ベンダーから、自社の機器で動作するサンプルコードが提供されました。彼らがANSI 9.24-1
規格からのステップを省略していることに気付いて少し驚いた。私はそのドキュメントを何百回も読みましたが、それがオプションであると言って見逃しているとは思えませんが、送信されたものを復号化する必要があったので、ステップを省略し、問題なく復号化しています。
具体的には、ANS X9.24-1:2009
の49ページに次のように記載されています。
4)
XOR
16進数のキーレジスタ“0000 0000 0000 00FF 0000 0000 0000 00FF”
。 (これにより、キーのバリアントが生成されます。)
私たちの新しいベンダーはこれを省略しました。興味深いことに、私たちの古いベンダーはそれを残しました。私はルールを作るのではなく、機能するコードを書くだけです。