在java中写入文件时加密XML元素

时间:2012-02-13 10:56:19

标签: java xml security

我有java应用程序通过XML向供应商发送(HTTP post method)信用卡号。 在编写XML文件时,当前信用卡号也会在文件中打印。但是,如果不加密,将信用卡号直接写入文件并不是一种好的做法。

我不想加密整个XML,因为我们通过HTTPS链接发送安全信息,因此我认为它提供了必要的安全性。所以我想在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>

请注意,我想写一个发送给供应商的相同字符串。

1 个答案:

答案 0 :(得分: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>