IOS의 경우는 결제받은 영수증을 가지고 서버에서 IOS 인앱 서버로 

유효한 영수증인지 확인 요청을해 해킹 여부를 판단할수 있습니다. 



안드로이드에선 별도로 유효 영수증인지 확인해주는 서버가 없으미로


결제후 영수증 데이터와 Base64로 암호화된 영수증 데이터 둘을 게임 서버로 보내 

Base64 Decode를 한후 두 영수증이 동일한지 체크하여 해킹을 막을수 있습니다.



아래는 게임서버쪽 영수증 체크 코드 입니다.



  1 
  2 import java.security.KeyFactory;
  3 import java.security.PublicKey;
  4 import java.security.Signature;
  5 import java.security.spec.X509EncodedKeySpec;
  6  
  7 String receiptData = "영수증데이터"; 
  8 String receiptEncodeData = "암호화된 영수증데이터";
  9 String publicKeyStr = "퍼블릭키";
 10  
 11 PublicKey publicKey = null;
 12 byte[] decodeKey = Base64.decodeBase64(publicKeyStr);
 13 KeyFactory keyFactory = KeyFactory.getInstance("RSA");
 14 publicKey = keyFactory.generatePublic(new X509EncodedKeySpec(decodeKey));
 15  
 16 Signature sig;
 17 sig = Signature.getInstance("SHA1withRSA");
 18 sig.initVerify(publicKey);
 19 sig.update(receiptData.getBytes());
 20 if(!sig.verify(Base64.decodeBase64(receiptEncodeData))){
 21  //영수증검증실패
 22 }else{
 23 //영수증검증성공
 24 }





+ Recent posts