2012-02-13 2 views
2

XML을 통해 공급자에게 신용 카드 번호 (HTTP post method)를 보내는 자바 애플리케이션이 있습니다. XML 파일을 작성할 때 현재 신용 카드 번호가 파일에 인쇄됩니다. 그러나 신용 카드 번호를 암호화하지 않고 파일에 직접 작성하는 것은 좋지 않습니다.자바에서 파일에 쓰는 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

그 경우 Number 태그를 구문 분석하는 메서드를 통해 xml을 전달한 다음 마지막 4 자리와 별개로 astericks로 내용을 바꿉니다. –

답변

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> 
관련 문제