Apidog

올인원 협업 API 개발 플랫폼

API 설계

API 문서

API 디버깅

API 모킹

API 자동화 테스트

Apidog에서 응답 데이터를 디코드하고 복호화하는 방법

때때로 API 응답 데이터가 인코딩되거나 암호화되어 있을 수 있으며, 이를 읽을 수 있는 평문으로 변환해야 할 수 있습니다. Apidog의 내장 JS 라이브러리를 사용하거나 Python이나 JavaScript와 같은 외부 프로그래밍 언어를 호출하여 처리할 수 있습니다.

Young-jae

Young-jae

Updated on December 20, 2024

때때로 API 응답 데이터가 인코딩되거나 암호화되어 있어 사람이 읽을 수 있는 일반 텍스트로 변환해야 할 필요가 있습니다. Apidog 의 내장 JS 라이브러리를 사용하거나 Python이나 JavaScript와 같은 외부 프로그래밍 언어를 호출하여 처리할 수 있습니다.

예를 들어, Base64로 인코딩된 데이터는 내장 라이브러리를 사용하여 디코드할 수 있습니다.

Decode and Decrypt

아래에서는 디코딩 및 복호화의 일반적인 예제를 공유합니다. 아직 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"에서 디코드된 데이터를 볼 수 있습니다.

Decrypt code in console

추가로, 이렇게 디코드된 데이터를 향후 사용을 위해 환경 변수에 저장할 수도 있습니다:

pm.environment.set("decodedData", decodedData);

JSON 응답에 Base64로 인코딩된 데이터가 포함되어 있는 경우, CryptoJS를 사용하여 디코드하고 디코드된 JSON 데이터를 pm.response.setBody() 메서드를 사용하여 응답 본문으로 설정할 수 있습니다. Base64로 인코딩된 JSON 응답의 예는 다음과 같습니다:

 a Base64 encoded JSON response

이를 디코드하고 응답 본문에 디코드된 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));
decoded JSON data

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"
Decode by decodeURIComponent()

응답 데이터 복호화

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!"

응답 콘솔에서 복호화된 데이터를 볼 수 있습니다.

AES Decryption

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 Decryption

간단한 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);
RSA encryption and decryption in JS

복호화를 위한 외부 프로그램 사용

Apidog의 내장 JS 라이브러리를 사용하는 것 외에도 복호화를 수행하기 위해 "외부 프로그램"을 호출할 수 있습니다. 외부 프로그램 사용에 대한 자세한 내용은 Apidog 도움말 센터를 참조하여 확인할 수 있습니다.

💡
외부 프로그램 은 외부 프로그램 디렉터리에 저장되며 .jar와 같은 Java 프로그램, 또는 다른 언어의 스크립트용 .py, .php, .js와 같은 코드 파일을 포함할 수 있습니다. 이 디렉터리는 Apidog 인터페이스의 오른쪽 상단에 있는 "설정 -> 외부 프로그램"을 통해 접근할 수 있습니다.
External Programs

예: Node.js에서 RSA 복호화

Node.js에서 node-forge 라이브러리를 사용하여 RSA 복호화를 수행하려면 외부 프로그램 디렉터리에서 .js 파일을 생성하여 복호화 로직을 구현할 수 있습니다. 방법은 다음과 같습니다:

  1. 복호화 스크립트 만들기 먼저 .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);
  1. 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를 사용해 보세요!

버튼
EXAONE 3.0 7.8B 모델을 로컬에서 실행하는 방법튜토리얼

EXAONE 3.0 7.8B 모델을 로컬에서 실행하는 방법

이 글에서는 EXAONE 3.0 7.8B 모델을 자신의 컴퓨터에서 설치하고 실행하는 방법을 단계별로 상세히 알아보겠습니다

Young-jae

March 25, 2025

Claude 3.7 소넷 API에 접근하고 Apidog을 사용하여 테스트하는 방법튜토리얼

Claude 3.7 소넷 API에 접근하고 Apidog을 사용하여 테스트하는 방법

Anthropic의 최신 출시인 Claude 3.7 Sonnet에 대해 기대하고 있으며, Apidog로 테스트하면서 API를 통한 기능을 탐색하고 싶다면, 올바른 장소에 오신 것입니다. 💡시작하기 전에 간단한 팁을 드리겠습니다: 오늘 Apidog를 무료로 다운로드하여 API 테스트 프로세스를 간소화하세요. 특히 Claude 3.7 Sonnet의 강력한 기능을 탐색하는 데 적합한 도구로, 최첨단 AI 모델을 테스트하려는 개발자에게 이상적입니다!버튼 Claude 3.7 Sonnet이 중요한 이유로 시작해봅시다. Anthropic은 최근 2025년 2월 24일에 이 모델을 공개했으며, 즉시 및 단계별 응답을 위한 하이브리드 추론 기능을 갖춘 가장 지능적인 창작물로 자리 잡았습니다. 이는 코딩, 추론 등 여러 부분에서 혁신적인 변화를 가져오며, 현재 e Anthropic API, Amazon Bedrock, Google Cloud의 Vertex AI를 통해 사용할 수 있습니다. 이 튜

Young-jae

February 25, 2025

GitHub Copilot 무료: 어떻게 시작하나요?튜토리얼

GitHub Copilot 무료: 어떻게 시작하나요?

GitHub Copilot 무료 사용법을 알아보세요. 이 AI 기반 코딩 도우미에 대한 이 가이드는 VS Code와 JetBrains와 같은 인기 IDE의 설정 단계를 다루며, 무료로 스마트한 코드 제안 및 완성을 통해 생산성을 높일 수 있도록 도와줍니다!

Young-jae

December 19, 2024