때때로 API 응답 데이터가 인코딩되거나 암호화되어 있어 사람이 읽을 수 있는 일반 텍스트로 변환해야 할 필요가 있습니다. Apidog 의 내장 JS 라이브러리를 사용하거나 Python이나 JavaScript와 같은 외부 프로그래밍 언어를 호출하여 처리할 수 있습니다.
예를 들어, Base64로 인코딩된 데이터는 내장 라이브러리를 사용하여 디코드할 수 있습니다.
아래에서는 디코딩 및 복호화의 일반적인 예제를 공유합니다. 아직 Apidog를 설치하지 않았다면 시작하려면 버튼을 클릭하세요!
응답 데이터 디코딩
Base64 디코딩
API가 Base64로 인코딩된 데이터를 반환할 때, Apidog에 내장된 CryptoJS 라이브러리를 사용하여 디코드할 수 있습니다. 방법은 다음과 같습니다:
API가 다음과 같은 Base64로 인코딩된 데이터를 반환한다고 가정해 보겠습니다:
{"data": "SGVsbG8gd29ybGQh"}
다음과 같은 스크립트를 사용하여 이 Base64 데이터를 디코드할 수 있습니다:
// CryptoJS 라이브러리 가져오기
const CryptoJS = require("crypto-js");
// Base64로 인코딩된 문자열 (응답 데이터에서 추출)let encodedData = {"data": "SGVsbG8gd29ybGQh"
};
// Base64 데이터 디코드alet decodedData = CryptoJS.enc.Base64.parse(encodedData.data).toString(CryptoJS.enc.Utf8);
// 디코드된 결과 출력
console.log(decodedData); // "안녕하세요, 세계!"
Apidog에서는 위의 논리를 사용하여 "Post-request" 섹션에 사용자 지정 스크립트를 추가할 수 있습니다. 요청을 보낸 후 응답 패널의 "Console"에서 디코드된 데이터를 볼 수 있습니다.

추가로, 이렇게 디코드된 데이터를 향후 사용을 위해 환경 변수에 저장할 수도 있습니다:
pm.environment.set("decodedData", decodedData);
JSON 응답에 Base64로 인코딩된 데이터가 포함되어 있는 경우, CryptoJS를 사용하여 디코드하고 디코드된 JSON 데이터를 pm.response.setBody()
메서드를 사용하여 응답 본문으로 설정할 수 있습니다. Base64로 인코딩된 JSON 응답의 예는 다음과 같습니다:

이를 디코드하고 응답 본문에 디코드된 JSON 데이터를 표시하기 위한 샘플 스크립트는 다음과 같습니다:
// CryptoJS 라이브러리 가져오기
const CryptoJS = require("crypto-js");
// Base64로 인코딩된 문자열 (응답 데이터에서 추출)let encodedData = pm.response.text();
// Base64 데이터 디코드alet decodedData = CryptoJS.enc.Base64.parse(encodedData).toString(CryptoJS.enc.Utf8);
// 디코드된 JSON 문자열 파싱let jsonData = JSON.parse(decodedData);
// 파싱된 JSON 데이터를 응답 본문으로 설정
pm.response.setBody(JSON.stringify(jsonData));

URLEncode 디코드
응답 데이터가 URL로 인코딩되어 있을 때는 JavaScript의 내장 decodeURIComponent()
메서드를 사용하여 디코드할 수 있습니다.
예를 들어, 다음 URL로 인코딩된 JSON 문자열을 반환하는 API를 고려해 보십시오:
{"name": "%E5%BC%A0%E4%B8%89","email": "qxhswppn%40gmail.com"
}
이 JSON 문자열의 값을 디코드할 수 있는 방법은 다음과 같습니다:
// 이것은 응답에서 URL로 인코딩된 JSON 데이터입니다let response = {"name": "%E5%BC%A0%E4%B8%89","email": "qxhswppn%40gmail.com"
};
// decodeURIComponent로 디코드let decodedName = decodeURIComponent(response.name);
let decodedEmail = decodeURIComponent(response.email);
console.log(decodedName); // "제이슨"
console.log(decodedEmail); // "qxhswppn@gmail.com"

응답 데이터 복호화
AES 복호화
AES로 암호화된 암호문을 복호화하려면 적절한 키 또는 초기화 벡터(IV)를 제공해야 합니다. AES는 대칭 암호화를 사용하므로 암호화와 복호화에 동일한 키가 사용됩니다. 올바른 키나 IV가 없으면 암호문을 복호화할 수 없습니다.
ECB 모드에서 AES로 암호화된 암호문이 있다고 가정하면, 다음처럼 Apidog 내에서 CryptoJS 라이브러리를 사용하여 복호화할 수 있습니다:
// CryptoJS 라이브러리 가져오기const CryptoJS = require('crypto-js');
// Base64로 인코딩된 AES 암호화된 암호문 (응답 데이터에서 추출)const ciphertext = "Gig+YJFu4fLrrexzam/vblRV3hoT25hPZn0HoNoosHQ=";
// 복호화를 위한 키 (16/24/32 바이트여야 하며; 보통 환경 변수에서 읽어옴)const key = CryptoJS.enc.Utf8.parse('1234567891234567');
// AES 복호화const decryptedBytes = CryptoJS.AES.decrypt(ciphertext, key, {
mode: CryptoJS.mode.ECB, // 복호화 모드
padding: CryptoJS.pad.Pkcs7 // 패딩 방법
});
// 복호화된 바이트 배열을 UTF-8 문자열로 변환const originalText = decryptedBytes.toString(CryptoJS.enc.Utf8);
// 복호화된 텍스트 출력
console.log(originalText); // "안녕하세요, Apidog!"
응답 콘솔에서 복호화된 데이터를 볼 수 있습니다.

RSA 복호화
RSA로 암호화된 암호문을 복호화하려면 해당 RSA 개인 키를 제공해야 하며, RSA는 비대칭 암호화 알고리즘입니다. 키 쌍은 공개 키와 개인 키로 구성되며, 복호화에 개인 키가 필수적입니다.
Apidog에는 RSA 암호문을 복호화하는 데 사용할 수 있는 jsrsasign
라이브러리(최신 버전 업데이트)가 포함되어 있습니다. 예는 다음과 같습니다:
// jsrsasign 라이브러리 가져오기
const jsrsasign = require('jsrsasign');
// 개인 키 정의 (보통 환경 변수에서 읽어옴)
const privateKeyPEM = `
-----BEGIN PRIVATE KEY-----
개인 키…
-----END PRIVATE KEY-----
`;
// 암호문 정의 (보통 응답 데이터에서 추출)
const ciphertext = '';
// 복호화
const prvKeyObj = jsrsasign.KEYUTIL.getKey(privateKeyPEM);
const decrypted = jsrsasign.KJUR.crypto.Cipher.decrypt(ciphertext, prvKeyObj);
console.log(decrypted);

간단한 RSA 암호화 및 복호화에 대한 완전한 예제 참조(등록된 jsrsasign 버전은 10.3.0이며, 다른 버전의 구문이 호환되지 않을 수 있습니다)는 Node.js 환경에서 실행할 수 있으며 필요한 경우 Apidog에서 암호화 및 복호화 작업을 수행할 수 있습니다:
const rsa = require('jsrsasign');
// RSA 키 쌍 생성
const keypair = rsa.KEYUTIL.generateKeypair("RSA", 2048);
const publicKey = rsa.KEYUTIL.getPEM(keypair.pubKeyObj);
const privateKey = rsa.KEYUTIL.getPEM(keypair.prvKeyObj, "PKCS8PRV");
console.log("공개 키:", publicKey);
console.log("개인 키:", privateKey);
// 공개 키로 암호화
const plaintext = "안녕하세요, Apidog!";
const pubKeyObj = rsa.KEYUTIL.getKey(publicKey);
const encryptedHex = rsa.KJUR.crypto.Cipher.encrypt(plaintext, pubKeyObj);
console.log("암호화된 키:", encryptedHex);
// 개인 키로 복호화
const prvKeyObj = rsa.KEYUTIL.getKey(privateKey);
const decrypted = rsa.KJUR.crypto.Cipher.decrypt(encryptedHex, prvKeyObj);
console.log("복호화된 평문:", decrypted);

복호화를 위한 외부 프로그램 사용
Apidog의 내장 JS 라이브러리를 사용하는 것 외에도 복호화를 수행하기 위해 "외부 프로그램"을 호출할 수 있습니다. 외부 프로그램 사용에 대한 자세한 내용은 Apidog 도움말 센터를 참조하여 확인할 수 있습니다.
.jar
와 같은 Java 프로그램, 또는 다른 언어의 스크립트용 .py
, .php
, .js
와 같은 코드 파일을 포함할 수 있습니다. 이 디렉터리는 Apidog 인터페이스의 오른쪽 상단에 있는 "설정 -> 외부 프로그램"을 통해 접근할 수 있습니다.
예: Node.js에서 RSA 복호화
Node.js에서 node-forge
라이브러리를 사용하여 RSA 복호화를 수행하려면 외부 프로그램 디렉터리에서 .js
파일을 생성하여 복호화 로직을 구현할 수 있습니다. 방법은 다음과 같습니다:
- 복호화 스크립트 만들기 먼저
.js
파일을 만들고 복호화 로직을 구현합니다.node-forge
라이브러리를 사용할 것이므로 해당 디렉터리에서 npm 또는 yarn을 사용하여 설치합니다. 스크립트는 다음과 같을 수 있습니다:
// node-forge 라이브러리 가져오기
const forge = require('node-forge');
// 커맨드라인 인수 가져오기
const args = process.argv.slice(2);
// 개인 키 (PEM 형식)
const privateKeyPem = `
-----BEGIN RSA PRIVATE KEY-----
개인 키……
-----END RSA PRIVATE KEY-----`;
// 커맨드라인에서 암호화된 암호문
const encrypted = args[0];
// PEM 형식의 개인 키를 forge 개인 키 객체로 변환
const privateKey = forge.pki.privateKeyFromPem(privateKeyPem);
// Base64로 인코딩된 암호 데이터를 바이트 배열로 변환
const encryptedBytes = forge.util.decode64(encrypted);
// 데이터를 복호화
const decrypted = privateKey.decrypt(encryptedBytes, 'RSA-OAEP');
// console.log() 출력은 Apidog에 의해 캡처됩니다.
console.log(decrypted);
- Apidog에서 외부 프로그램 호출 복호화 스크립트를 작성한 후에는 Apidog의 "Post-request" 섹션에서
pm.executeAsync()
메서드를 사용하여 이 외부 프로그램을 호출할 수 있습니다. 복호화 스크립트가 올바른 외부 프로그램 디렉터리에 위치하고, 참조하는 경로가 해당 디렉터리에 상대적임을 확인하세요. 호출하는 방법은 다음과 같습니다:
// 암호화된 암호문 (보통 응답 데이터에서 가져옴)
const encrypted = 'iDqUyR3BpaTqpzq…………';
// 외부 프로그램 경로, 매개변수 전달
const result = await pm.executeAsync('./nodejs-rsa/rsa.js', [`${encrypted}`]);
console.log('결과:', result);
Apidog에서 요청을 보낼 때, 자동으로 정의한 외부 프로그램에 암호문을 전달하고 복호화를 수행하며, console.log()
를 통해 결과 출력을 캡처하고 최종적으로 디코드된 평문을 반환합니다.
이러한 복호화는 Node.js에 한정되지 않으며, Java, PHP, Python, Go 등과 같은 다른 프로그래밍 언어도 유사한 작업 및 호출을 수행할 수 있습니다.
결론
이 문서에 설명된 방법을 사용하면 Apidog에서 응답 데이터를 효과적으로 디코드하고 복호화하여 읽을 수 있는 일반 텍스트로 변환할 수 있습니다. 지금 Apidog를 사용해 보세요!