전담지원 신청
Guide > 서명데이터

서명데이터

서명데이터란?

서명데이터(kcp_sign_data)는 가맹점 부인 방지와 요청 데이터의 무결성 검증을 위한 데이터입니다.
NHN KCP로부터 발급받은 개인키로 SHA256withRSA 알고리즘을 사용하여 문자열을 인코딩하는 방식으로 이루어집니다.

개인키 발급 및 관리 방법은 KCP PG-API를 확인하세요.

1. 서명데이터 생성

Cancel API 서명데이터(kcp_sign_data)는 아래 규칙으로 원문을 조합한 뒤,
개인키로 SHA256withRSA 서명을 생성하고 Base64로 인코딩하여 전달합니다.

서명 원문 조합 규칙

kcp_sign_data = site_cd + "^" + tno + "^" + mod_type

생성 흐름

단계설명
1. 원문 조합site_cd + "^" + tno + "^" + mod_type 문자열을 조합합니다.
예) T0000^24346915432487^STSC
2. 서명 생성조합된 원문을 개인키(PKCS8)로 SHA256withRSA 알고리즘을 사용하여 서명합니다.
3. 인코딩서명 결과를 Base64로 인코딩합니다.
4. 전달인코딩된 값을 kcp_sign_data 파라미터에 담아 거래취소 API를 요청합니다.

파라미터 설명

파라미터설명예시
site_cdNHN KCP 발급 사이트코드T0000
tnoNHN KCP 거래 고유번호24346915432487
mod_type취소 유형
STSC : 전체취소
STPC : 부분취소
STSC

2. 코드 예시 (JSP)

아래는 Java(JSP) 환경에서 서명데이터를 생성하는 예시입니다.
개인키 파일(PKCS8)을 로드한 뒤 SHA256withRSA 서명을 생성하고, Base64로 인코딩하여 반환합니다.

// JSP 예시

public static String makeSignatureData(String targetData){
  String signData  = null;
  PrivateKey priKey = null;
  priKey = loadSplMctPrivateKeyPKCS8();

  byte[ ] btArrTargetData = targetData.getBytes( StandardCharsets.UTF_8 );
  try {
      Signature sign = Signature.getInstance( "SHA256WithRSA" );
      sign.initSign( priKey );
      sign.update( btArrTargetData );
      byte[ ] btArrSignData = sign.sign();
      signData = Base64.getEncoder().encodeToString( btArrSignData );

  } catch (NoSuchAlgorithmException e) {
      e.printStackTrace();
  } catch (InvalidKeyException e) {
      e.printStackTrace();
  } catch (SignatureException e) {
      e.printStackTrace();
  }
  return signData;
}

서명 데이터 생성 샘플

site_cd
tno (거래번호)
mod_type
서명 원문 (cancel_sign_data)
서명 결과 (kcp_sign_data)