2013-05-04 4 views
5

Ich bin auf der Suche nach einer Möglichkeit, eine EMV-Antwort mit Java wie mit dieser Online-Option zu übersetzen:EMV TLV Java-Funktion

http://www.emvlab.org/tlvutils/

, wo man so etwas wie diese EMV Antwort setzen:

6f3a8407a0000000031010a52f500b56495341204352454449548701015f2d086573656e707466729f12074352454449544f9f1101019f38039f1a02

und es wird Ihnen alles perfekt zeigen, ich fing an, etwas selbst zu machen, aber dann merke ich, dass wir vielleicht cou Ich habe zwei 9F38 (PDOL) Strings nicht notwendig zwei gleiche Tags, denn ich weiß, es ist unmöglich, aber vielleicht der Wert eines Tags endet in 9F und der Beginn des nächsten Tags wäre 38 und das würde mir einen Fehler geben ... Nun, dass Ich erwähne es, ist das möglich? Denn das war einer der Hauptgründe, warum ich aufgehört habe, meine eigene Funktion zu machen.

Hat jemand von euch eine Funktion geschrieben, um das schon zu tun?

Danke!

Antwort

7

https://github.com/binaryfoo/emv-bertlv sollte es tun.

mit Ihrem Beispiel den folgenden Code:

List<DecodedData> decoded = new RootDecoder().decode("6f3a8407a0000000031010a52f500b56495341204352454449548701015f2d086573656e707466729f12074352454449544f9f1101019f38039f1a02", "EMV", "constructed"); 
new DecodedWriter(System.out).write(decoded, ""); 

Will Ausgang:

[6F (FCI template)] 8407A0000000031010A52F500B56495341204352454449548701015F...1A02 
[84 (dedicated file name)] A0000000031010 
[A5 (FCI proprietary template)] 500B56495341204352454449548701015F2D086573656E707466729F...1A02 
    [50 (application label)] VISA CREDIT 
    [87 (application priority indicator)] 01 
    [5F2D (language preference)] esenptfr 
    [9F12 (application preferred name)] CREDITO 
    [9F11 (issuer code table index)] 01 
    [9F38 (PDOL - Processing data object list)] 9F1A02 
    9F1A (terminal country code) 2 bytes 
+0

kann nicht mit dem folgenden Code dekodieren. –

0

Sie auf dem richtigen Weg sind. Sie können Ihren eigenen EMV-Parser einfach mit dem Technik-Call TLV (Tag Length Value) erstellen. Ihre Rohdaten werden immer mit einem Tag zurückgegeben. Wenn das Tag die Länge hat, können Sie mit der Länge den Wert erhalten.

erstellen So drei Methoden

Methode 1: Enthält alle Short-Tags Methode 2: Enthält alle die langen Tags Methode 3: Enthält alle proprietäre Tags

Also, wenn Sie in Ihrem rohen emv passieren tag:

6f3a8407a0000000031010a52f500b56495341204352454449548701015f2d086573656e707466729f12074352454449544f9f1101019f38039f1a02

Schleife durch alle t Drei Methoden, es wird Ihnen alle Informationen geben, die Sie brauchen.