var crypto = require('crypto');var hashedKey = crypto.createHash('sha256').update(APIKEY).digest();
2
암호화 예시
아래 예시는 데이터를 AES-256 방식으로 암호화하는 방법을 보여줍니다.
Copy
Ask AI
var crypto = require('crypto'); /** * @param {string} data - Stringified JSON data * @param {string} apiKey - Project API key * @returns {string} Encrypted data * * 정확한 암호화를 위해선 formatJSON 으로 사용해주세요. 예시는 다음과 같습니다. * const data = { userid: "10912301", email: "email@email.com" * }; * * 다음과 같이 직접 string 으로 입력을 피해주세요. * 기대한 암호화 결과가 달라질 수 있습니다. * `{"userid":"10912301","email":"email@email.com"}` */ function encrypt(data, apiKey) { var hashedKey = crypto.createHash('sha256').update(apiKey).digest(); var cipher = crypto.createCipheriv('aes-256-ecb', hashedKey, null); return cipher.update(data, 'utf8', 'base64') + cipher.final('base64'); }
3
GCM 암호화 예시
아래 예시는 데이터를 AES-256-GCM 방식으로 암호화하는 방법을 보여줍니다.
Copy
Ask AI
var crypto = require('crypto');/** * @param {string} data - Stringified JSON data * @param {string} apiKey - Project API key * @returns {string} Encrypted data in hex format (IV + ciphertext + tag) * * GCM 모드는 인증된 암호화를 제공하며, IV와 인증 태그가 포함됩니다. * 반환값은 12바이트 IV + 암호문 + 16바이트 인증 태그를 hex 문자열로 인코딩한 형태입니다. */function encryptGCM(data, apiKey) { var hashedKey = crypto.createHash('sha256').update(apiKey).digest(); var iv = crypto.randomBytes(12); var cipher = crypto.createCipheriv('aes-256-gcm', hashedKey, iv); var encrypted = cipher.update(data, 'utf8'); encrypted = Buffer.concat([encrypted, cipher.final()]); var tag = cipher.getAuthTag(); var result = Buffer.concat([iv, encrypted, tag]); return result.toString('hex');}/** * @param {string} encryptedHex - Hex encoded encrypted data * @param {string} apiKey - Project API key * @returns {string} Decrypted data */function decryptGCM(encryptedHex, apiKey) { var hashedKey = crypto.createHash('sha256').update(apiKey).digest(); var encryptedBuffer = Buffer.from(encryptedHex, 'hex'); var iv = encryptedBuffer.slice(0, 12); var tag = encryptedBuffer.slice(-16); var encrypted = encryptedBuffer.slice(12, -16); var decipher = crypto.createDecipheriv('aes-256-gcm', hashedKey, iv); decipher.setAuthTag(tag); var decrypted = decipher.update(encrypted); decrypted = Buffer.concat([decrypted, decipher.final()]); return decrypted.toString('utf8');}
4
복호화 예시
아래 예시는 AES-256 방식으로 암호화된 데이터를 복호화하는 방법을 보여줍니다.
Copy
Ask AI
var crypto = require('crypto'); /** * @param {string} encryptedData * @param {string} apiKey * @returns {string} Decrypted data */ function decrypt(encryptedData, apiKey) { var hashedKey = crypto.createHash('sha256').update(apiKey).digest(); var decipher = crypto.createDecipheriv('aes-256-ecb', hashedKey, null); return decipher.update(encryptedData, 'base64', 'utf8') + decipher.final('utf8'); }
5
GCM 복호화 예시
아래 예시는 AES-256-GCM 방식으로 암호화된 데이터를 복호화하는 방법을 보여줍니다.
Copy
Ask AI
var crypto = require('crypto');/** * @param {string} encryptedHex - Hex encoded encrypted data (IV + ciphertext + tag) * @param {string} apiKey - Project API key * @returns {string} Decrypted data */function decryptGCM(encryptedHex, apiKey) { var hashedKey = crypto.createHash('sha256').update(apiKey).digest(); var encryptedBuffer = Buffer.from(encryptedHex, 'hex'); // IV, 암호문, 태그 분리 var iv = encryptedBuffer.slice(0, 12); var tag = encryptedBuffer.slice(-16); var encrypted = encryptedBuffer.slice(12, -16); var decipher = crypto.createDecipheriv('aes-256-gcm', hashedKey, iv); decipher.setAuthTag(tag); var decrypted = decipher.update(encrypted); decrypted = Buffer.concat([decrypted, decipher.final()]); return decrypted.toString('utf8');}
API 메서드(GET, POST, PATCH)와 WEBHOOK에서 데이터를 암호화하여 안전하게 전송합니다. API 메서드는 AES-256-ECB 방식을, WEBHOOK은 AES-256-CBC 방식을 사용하여 암호화합니다. 데이터를 안전하게 보호하기 위해 사용 전에 반드시 안전한 데이터 전송 기능이 활성화되어 있는지 확인하세요.안전한 데이터 전송 기능이 활성화 되어 있을 경우, Request body 는 반드시 암호화하여 전송하여야 합니다. 암호화를 사용할 때: 전체 요청 본문 객체를 암호화합니다. 암호화된 문자열을 body 매개변수로 전송합니다. AES-256-ECB 형태로 암호화가 필요하며, 암호화 방법은 하기 주요 특징과 설명을 참조하세요.