0

現在、IDTech 暗号化ピンパッド/カード リーダー (HIDUSB デバイス) のサポートをコーディングしようとしています。入力すると (スワイプまたはキー入力)、デバイスは次のような XML で応答を送信します。

<DvcMsg Ver="1.1"><Dvc App="SecureKey Demo Software" AppVer="1.0" DvcType="M130-IDTECH" DvcSN="54114600381" Entry="SWIPE"></Dvc><Card CEncode="0" ETrk1="ýÚ‹çMŒ·¯×Õ³a+.7ãN2†ÖcƒTWïX¿6`Eåq1Bk_–Ø‚ÑM€œœåê`S" ETrk2="ÓÙ|•QΊkÄn`å ¤óhîõRÐ3ÌЀ{Rs¤Ì7MX¯nw" CDataKSN="P&ƒµ" Exp="0512" MskPAN="4444******4444" CHolder="PAYMENTECH" EFormat="4"></Card><Addr></Addr><Tran TranType="CREDIT"></Tran></DvcMsg>

ETrk1、ETrk2、および CDataKSN 属性の暗号化された情報に無効な文字が含まれていることがわかりました。これにより、XML パーサーがトラック内で停止する可能性があります。XMLを解析できるように、異なる文字エンコーディングを使用して各文字に相当する16進数を生成する方法はありますか?それを達成するには、最初にXML文字列を操作する必要がありますか?

4

1 に答える 1

0

不正な文字を探して文字コード (&#xxxx) に置き換えるだけで、文字列を前処理することができます。ただし、近い引用符を含む暗号化されたブロブがいつか心配になるでしょう。その可能性がある場合、独自のパーサーを作成する方法がわかりません。

もう 1 つのアプローチは、それを XML としてまったく扱わず、いくつかの変数セクションが挿入された大部分が固定されたテキストと見なすことです。したがって、正規表現を実行するか、フィールドが固定長の場合は、SubString 呼び出しを実行することもできます。フォーマットが変更された場合、これは明らかに破損しやすくなります。

于 2013-01-25T01:48:22.643 に答える