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