@jihyunlab/secret은 별도의 구현 없이 쉽게 사용할 수 있는 텍스트 및 파일 암호화 기능을 제공합니다.
@jihyunlab/secret은 AES-256-GCM을 이용한 암호화 기능을 제공하며, 환경 변수를 암호화 키로 사용하여 암호화 키를 안전하게 관리합니다.
프로젝트 폴더에서 @jihyunlab/secret을 설치합니다.
npm i @jihyunlab/secret
시스템이나 사용자 환경 변수에 JIHYUNLAB_SECRET_KEY를 등록하면 암호화 시 등록된 환경 변수가 암호화 키로 사용됩니다.
export JIHYUNLAB_SECRET_KEY=YourKey
텍스트 암호화는 입력 텍스트를 암호화하고 암호화된 16진수 문자열을 반환합니다.
import { Text } from '@jihyunlab/secret';
const encrypted = Text.encrypt('string');
const decrypted = Text.decrypt(encrypted);
환경 변수의 암호화 키를 사용하는 대신 키를 직접 입력할 수 있습니다.
const encrypted = Text.encrypt('string', 'your key');
const decrypted = Text.decrypt(encrypted, 'your key');
파일 암호화는 입력 파일을 암호화하고 암호화된 버퍼 객체를 반환합니다.
import { File } from '@jihyunlab/secret';
const encrypted = File.encrypt('file');
const decrypted = File.decrypt('file_enc');
파일 암호화 및 복호화 결과를 즉시 다른 파일로 내보낼 수 있습니다.
const encrypted = File.encrypt('file', 'file_enc');
const decrypted = File.decrypt('file_enc', 'file_dec');
환경 변수의 암호화 키를 사용하는 대신 키를 직접 입력할 수 있습니다.
const encrypted = File.encrypt('file', 'file_enc', 'your key');
const decrypted = File.decrypt('file_enc', 'file_dec', 'your key');
텍스트 암호화 기능과 파일 암호화 기능을 혼합하여 사용하려면 아래를 참조하세요.
import { Text, File } from '@jihyunlab/secret';
import { writeFileSync } from 'fs';
const encrypted = Text.encrypt('string');
writeFileSync('file_enc', Buffer.from(encrypted, 'hex'));
const decrypted = File.decrypt('file_enc');
decrypted.toString('utf8');
@jihyunlab/crypto의 암호화 기능을 간편하게 사용할 수 있습니다.
import { Crypto } from '@jihyunlab/secret';
const encrypted = Crypto.encrypt.hex('string');
const decrypted = Crypto.decrypt.hex(encrypted);
버퍼를 사용하여 암호화 기능을 구현할 수 있습니다.
const encrypted = Crypto.encrypt.buffer(Buffer.from('string'));
const decrypted = Crypto.decrypt.buffer(encrypted);
미리 정의된 함수로 생성될 암호화 텍스트의 출력 타입과 복호화 텍스트의 입력 타입을 선택할 수 있습니다.
Crypto.encrypt.hex('string');
Crypto.decrypt.hex(encrypted);
Crypto.encrypt.binary('string');
Crypto.decrypt.binary(encrypted);
Crypto.encrypt.base64('string');
Crypto.decrypt.base64(encrypted);
Crypto.encrypt.base64url('string');
Crypto.decrypt.base64url(encrypted);
Crypto.encrypt.buffer(Buffer.from('string'));
Crypto.decrypt.buffer(encrypted);
Crypto.encrypt.uint8Array(Buffer.from('string'));
Crypto.decrypt.uint8Array(encrypted);
암호화와 복호화 텍스트의 입력, 출력 타입을 선택할 수 있습니다.
입력, 출력 텍스트 타입은 Node.js에서 정의된 타입이어야 합니다.
const encrypted = Crypto.encrypt.string('string', 'utf8', 'base64url');
const decrypted = Crypto.decrypt.string(encrypted, 'base64url', 'utf8');
환경 변수의 암호화 키를 사용하는 대신 키를 직접 입력할 수 있습니다.
const encrypted = Crypto.encrypt.hex('string', 'utf8', 'your key');
const decrypted = Crypto.decrypt.hex(encrypted, 'utf8', 'your key');
@jihyunlab/secret-cli로 암호화된 .env를 간단한 방법으로 복호화 하여 사용할 수 있습니다.
TEXT=d879f8dfb00b7f9d73bf755569726ed296332765988e28dda664350291f4ca382cff501e82
import { Env } from '@jihyunlab/secret';
import { config } from 'dotenv';
Env.load(config());
console.log(process.env.TEXT);
Dotenv 이외의 라이브러리를 사용하는 경우에도 환경 변수의 내용을 복호화 할 수 있습니다.
const text = Text.decrypt(process.env.TEXT || '');
console.log(text);
info@jihyunlab.com