2012-02-13 13 views
2

私は、XMLを介してサプライヤに(HTTP post method)クレジットカード番号を送信するjavaアプリケーションを持っています。 XMLファイルを書き込むときに、現在クレジットカード番号がファイルにも印刷されています。しかし、暗号化せずに直接クレジットカード番号をファイルに書き込むことは良い習慣ではありません。Javaのファイルに書き込むXML要素を暗号化

安全な情報をHTTPSリンクで送信しているため、XML全体を暗号化したくないため、必要なセキュリティを提供していると見なします。だから私は、Java環境でファイルに書き込んでいる間、クレジットカード番号の要素だけを暗号化したいと思っています。

String xmlRequest = <?xml version='1.0'?> 
    <ReservationRequest> 
    <Passenger> 
    <firstName>XXX</firstName> 
    <lastName>YYY</lastName> 
    </Passenger>  
    <CreditCard Currency='USD'> 
     <Number>1234567812345678</Number> 
     <cvv>123</cvv> 
     <Expiration>12/12</Expiration> 
    </CreditCard> 
    </ReservationRequest> 

私はサプライヤに送る同じ文字列をファイルに書きたいと思います。

+0

あなたが「ファイルに書き込む」と言うとき、あなたは自分のログを意味するのですか? –

+0

はい、正確に書いてください。私たちはログフォルダを持っていて、すべてのXMLログを含んでいます –

+2

その場合、xmlをNumberタグを解析するメソッドに渡してから、最後の4桁からアスタリックスで内容を置き換えてみませんか? –

答えて

1
 String reqXml       = "" ;  

     String creditCardNumber     = "1234567890128899" ;  

     reqXml = "<RentalPaymentPref>" + 
     "<PaymentCard CardType=\"1\" CardCode=\"VI\" CardNumber=\""+creditCardNumber+"\" ExpireDate=\"0912\" SeriesCode=\"123\">" + 
     "<CardHolderName>Ruchira kariyawasam</CardHolderName>" + 
     "</PaymentCard>" + 
     "</RentalPaymentPref>" ;   

     StringBuffer reqXmlString = new StringBuffer(reqXml.toString());  

     short startIndex = (short)(reqXml.indexOf("CardNumber")+12); 


     if(null!=creditCardNumber && (!creditCardNumber.equals(""))) 
     { 
      reqXmlString.replace(startIndex,(startIndex+12),"xxxxxxxxxxxx");    
     }  

     System.out.println("reqXmlString---->"+reqXmlString); 


// Remaining file writing code goes here. 

ここでは、カード番号が空か空かを確認します。カード番号を取得した場合は、ファイルに書き込む間に文字列の内容のみをマスクします。

出力

<RentalPaymentPref> 
<PaymentCard CardType="1" CardCode="VI" CardNumber="xxxxxxxxxxxx8899" ExpireDate="0912" SeriesCode="123"> 
<CardHolderName>Ruchira kariyawasam</CardHolderName> 
</PaymentCard> 
</RentalPaymentPref> 
関連する問題