logo

@jihyunlab/secret

@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

@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');

암호화된 .env

@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);

라이센스

Open source licensed as MIT.

logo

ⓒ 2023. JihyunLab. All rights reserved.

info@jihyunlab.com