모듈 기본 모듈

모듈암호화

crypto모듈은 fibjs내장된 암호화 알고리즘 모듈입니다. 대칭 암호화, 비대칭 암호화, 다이제스트 알고리즘, 암호화 난수 생성기 및 기타 기능을 제공합니다. 사용하기 전에 require('crypto')모듈을 를 통해 로드해야 합니다.

crypto모듈 에는 다음과 같은 다양한 개체를 사용할 수 있습니다.

  • PKey: 비대칭 암호화 알고리즘 객체
  • X509Cert: X.509 인증서를 조작하는 데 사용되는 개체
  • Cipher: 대칭암호를 구현하는데 사용되는 객체
  • Digest: 다이제스트 알고리즘을 구현하는 데 사용되는 객체

암호화 알고리즘을 사용하기 전에 키 객체를 생성해야 합니다. 예를 들어 다음 AES예에서는 키 객체를 생성합니다.

1 2
const crypto = require('crypto'); const key = crypto.randomBytes(16); // generate a 16-byte random key

다음으로 Cipher객체를 사용하여 일반 텍스트를 암호화합니다.

1 2 3 4
const c = new crypto.Cipher(crypto.AES, crypto.ECB, key); const data = 'hello, world'; const encrypted = c.encrypt(data).hex(); console.log(encrypted); // output encrypted data

AES위의 예에서는 암호화된 Cipher객체가 생성되고 , encrypt해당 메서드를 사용하여 일반 텍스트가 암호화되고, 암호화 결과가 반환됩니다.

대칭 암호화 알고리즘 외에도 crypto모듈은 비대칭 암호화 알고리즘 및 다이제스트 알고리즘도 지원할 수 있습니다. 예를 들어 다음 예는 SHA256 암호화를 구현하기 위해 PKey및 개체를 사용하는 코드입니다.Digest

1 2 3 4 5 6
const privateKey = crypto.loadPKey('private.pem'); // read private key from file const data = 'hello, world'; const digest = new crypto.Digest(hash.SHA256); digest.update(data); const signature = privateKey.sign(digest.digest()); console.log(signature); // output signature

위의 예에서는 먼저 개인 키 파일을 읽고 입력 데이터를 준비합니다. 그런 다음 SHA256 Digest개체가 생성되고 update해당 메서드를 사용하여 해시 계산에 데이터가 추가됩니다. 계산이 완료된 후 privateKey.sign해당 메소드를 이용하여 서명 결과를 출력합니다.

요약하자면, crypto모듈은 다양한 암호화 알고리즘, 다이제스트 알고리즘 및 관련 객체를 제공하며, 이러한 기능은 대칭 및 비대칭 암호화, 디지털 서명 및 암호화 검증과 같은 다양한 보안 요구 사항을 달성하는 데 도움이 될 수 있습니다.

물체

Cipher

Cipher생성자, 참조Cipher

1
Cipher crypto.Cipher;

PKey

PKey생성자, 참조PKey

1
PKey crypto.PKey;

ECKey

ECKey생성자, 참조ECKey

1
ECKey crypto.ECKey;

BlsKey

BlsKey생성자, 참조BlsKey

1
BlsKey crypto.BlsKey;

X509Cert

X509Cert생성자, 참조X509Cert

1
X509Cert crypto.X509Cert;

X509Crl

X509Crl생성자, 참조X509Crl

1
X509Crl crypto.X509Crl;

X509Req

X509Req생성자, 참조X509Req

1
X509Req crypto.X509Req;

정적 함수

createHash

주어진 알고리즘 이름을 기반으로 정보 요약 개체를 생성합니다.

1
static Digest crypto.createHash(String algo);

호출 매개변수:

  • algo: 정보 다이제스트 객체의 알고리즘을 지정하는 문자열

결과 반환:

  • Digest, 정보 요약 객체를 반환합니다.

createHmac

주어진 알고리즘 이름을 기반으로 hmac 정보 요약 개체를 생성합니다.

1 2
static Digest crypto.createHmac(String algo, Buffer key);

호출 매개변수:

  • algo: 정보 다이제스트 객체의 알고리즘을 지정하는 문자열
  • key:Buffer, 바이너리 서명 키

결과 반환:

  • Digest, 정보 요약 객체를 반환합니다.

loadCert

여러 번 호출할 수 있는 CRT/PEM/DER 형식의 인증서 로드

1
static X509Cert crypto.loadCert(String filename);

호출 매개변수:

  • filename: 문자열, 인증서 파일 이름

결과 반환:

  • X509Cert, 인증서가 포함된 객체를 반환합니다.

loadCrl

여러 번 호출할 수 있는 PEM/DER 형식으로 해지 인증서 로드

1
static X509Crl crypto.loadCrl(String filename);

호출 매개변수:

  • filename: 문자열, 해지 인증서 파일 이름

결과 반환:

  • X509Crl, 해지된 인증서가 포함된 객체를 반환합니다.

loadReq

여러 번 호출할 수 있는 PEM/DER 형식으로 인증서 요청을 로드합니다.

1
static X509Req crypto.loadReq(String filename);

호출 매개변수:

  • filename: 문자열, 인증서 요청 파일 이름

결과 반환:

  • X509Req, 요청된 인증서가 포함된 객체를 반환합니다.

loadPKey

CRT/PEM/DER 형식의 비대칭 공개 또는 개인 키 로드

1
static PKey crypto.loadPKey(String filename);

호출 매개변수:

  • filename: 문자열, 공개 키 또는 개인 키 파일 이름

결과 반환:


randomBytes

헤이지 생성기를 사용하여 지정된 크기의 난수 생성

1
static Buffer crypto.randomBytes(Integer size = 16) async;

호출 매개변수:

  • size: 정수, 생성되는 난수의 크기를 지정합니다.

결과 반환:

  • Buffer, 생성된 난수를 반환합니다.

simpleRandomBytes

빠른 알고리즘을 사용하여 지정된 크기의 저강도 난수 생성

1
static Buffer crypto.simpleRandomBytes(Integer size = 16) async;

호출 매개변수:

  • size: 정수, 생성되는 난수의 크기를 지정합니다.

결과 반환:

  • Buffer, 생성된 난수를 반환합니다.

pseudoRandomBytes

엔트로피 생성기를 사용하여 지정된 크기의 의사 난수 생성

1
static Buffer crypto.pseudoRandomBytes(Integer size = 16) async;

호출 매개변수:

  • size: 정수, 생성되는 난수의 크기를 지정합니다.

결과 반환:

  • Buffer, 생성된 난수를 반환합니다.

randomFill

난수를 사용하여 지정된 값을 채웁니다.Buffer, Havege 생성기를 사용하여

1 2 3
static Buffer crypto.randomFill(Buffer buffer, Integer offset = 0, Integer size = -1) async;

호출 매개변수:

  • buffer:Buffer, 생성된Buffer
  • offset: 정수, 시작 오프셋을 지정합니다. 기본값은 0입니다.
  • size: 정수, 생성된 난수의 크기를 지정합니다. 기본값은 buffer.length - 오프셋입니다.

결과 반환:

  • Buffer, 생성된 난수를 반환합니다.

randomArt

주어진 데이터의 시각적 문자 이미지를 생성합니다.

1 2 3
static String crypto.randomArt(Buffer data, String title, Integer size = 8);

호출 매개변수:

  • data:Buffer, 표시할 데이터를 지정합니다.
  • title: 문자열, 문자 이미지의 제목을 지정합니다. 멀티바이트 문자는 너비 오류를 발생시킵니다.
  • size: 정수, 문자 이미지 크기

결과 반환:

  • String, 생성된 시각적 문자열 이미지를 반환합니다.

generateKey

RSA 개인 키 생성

1
static PKey crypto.generateKey(Integer size) async;

호출 매개변수:

  • size: 정수, RSA 키 길이를 비트 단위로 지정합니다.

결과 반환:

  • PKey, 생성된 개인 키가 포함된 객체를 반환합니다.

타원 곡선 개인 키 생성

1
static PKey crypto.generateKey(String curve = "secp521r1") async;

호출 매개변수:

  • curve: 문자열, 미리 설정된 타원 곡선을 지정합니다. 기본값은 'secp256r1'입니다.

결과 반환:

  • PKey, 생성된 개인 키가 포함된 객체를 반환합니다.

곡선 선택적 곡선에는 다음과 같은 NIST 곡선과 별칭이 포함됩니다.

곡선 별명
NIST P-192 'NIST P-192', 'p192', 'P-192', 'prime192v1', 'secp192r1'
NIST P-224 'NIST P-224', 'p224', 'P-224', 'prime224v1', 'secp224r1'
NIST P-256 'NIST P-256', 'p256', 'P-256', 'prime256v1', 'secp256r1'
NIST P-384 'NIST P-384', 'p384', 'P-384', 'prime384v1', 'secp384r1'
NIST P-521 'NIST P-521', 'p521', 'P-521', 'prime521v1', 'secp521r1'

기타 지원되는 곡선에는 "brainpoolP512r1", "brainpoolP384r1", "secp256k1", "P-256K", "brainpoolP256r1", "sm2p256r1", "SM2", "Ed25519", "BLS12381_G1", "BLS12381_G2"가 있습니다.


pbkdf1

pbkdf1을 기반으로 일반 텍스트 비밀번호를 기반으로 필수 바이너리 키를 생성합니다.

1 2 3 4 5
static Buffer crypto.pbkdf1(Buffer password, Buffer salt, Integer iterations, Integer size, Integer algo) async;

호출 매개변수:

  • password:Buffer, 사용할 비밀번호를 지정하세요
  • salt:Buffer, hmac에서 사용하는 솔트를 지정합니다.
  • iterations: 정수, 반복 횟수 지정
  • size: 정수, 키 크기 지정
  • algo: 정수, 다음을 지정하십시오.hash알고리즘, 참조hash기준 치수

결과 반환:

  • Buffer, 생성된 바이너리 키를 반환합니다.

pbkdf1을 기반으로 일반 텍스트 비밀번호를 기반으로 필수 바이너리 키를 생성합니다.

1 2 3 4 5
static Buffer crypto.pbkdf1(Buffer password, Buffer salt, Integer iterations, Integer size, String algoName) async;

호출 매개변수:

  • password:Buffer, 사용할 비밀번호를 지정하세요
  • salt:Buffer, hmac에서 사용하는 솔트를 지정합니다.
  • iterations: 정수, 반복 횟수 지정
  • size: 정수, 키 크기 지정
  • algoName: 문자열, 다음을 지정합니다.hash알고리즘, 참조hash기준 치수

결과 반환:

  • Buffer, 생성된 바이너리 키를 반환합니다.

pbkdf2

rfc2898에 따라 일반 텍스트 비밀번호를 기반으로 필요한 바이너리 키를 생성합니다.

1 2 3 4 5
static Buffer crypto.pbkdf2(Buffer password, Buffer salt, Integer iterations, Integer size, Integer algo) async;

호출 매개변수:

  • password:Buffer, 사용할 비밀번호를 지정하세요
  • salt:Buffer, hmac에서 사용하는 솔트를 지정합니다.
  • iterations: 정수, 반복 횟수 지정
  • size: 정수, 키 크기 지정
  • algo: 정수, 다음을 지정하십시오.hash알고리즘, 참조hash기준 치수

결과 반환:

  • Buffer, 생성된 바이너리 키를 반환합니다.

rfc2898에 따라 일반 텍스트 비밀번호를 기반으로 필요한 바이너리 키를 생성합니다.

1 2 3 4 5
static Buffer crypto.pbkdf2(Buffer password, Buffer salt, Integer iterations, Integer size, String algoName) async;

호출 매개변수:

  • password:Buffer, 사용할 비밀번호를 지정하세요
  • salt:Buffer, hmac에서 사용하는 솔트를 지정합니다.
  • iterations: 정수, 반복 횟수 지정
  • size: 정수, 키 크기 지정
  • algoName: 문자열, 다음을 지정합니다.hash알고리즘, 참조hash기준 치수

결과 반환:

  • Buffer, 생성된 바이너리 키를 반환합니다.

getHashes

암호화 모듈 지원 받기hash(Abstract) 'md5', 'sha224'와 같은 알고리즘

1
static Array crypto.getHashes();

결과 반환:

  • Array, 지원되는 fibjs를 반환합니다.hash알고리즘 배열

끊임없는

AES

대칭 암호화 알고리즘 AES 지정, 128, 192, 256비트 키 지원, 블록 암호화 작업 모드는 ECB, CBC, CFB128, CTR, GCM, CCM, XTS 지원

1
const crypto.AES = 1;

DES

대칭 암호화 알고리즘 DES를 지정하고 64비트 키를 지원하며 블록 암호 작업 모드는 ECB, CBC를 지원합니다.

1
const crypto.DES = 2;

DES_EDE3

대칭 암호화 알고리즘 DES-EDE3 지정, 192비트 키 지원, 블록 암호화 작업 모드는 ECB, CBC 지원

1
const crypto.DES_EDE3 = 3;

CAMELLIA

대칭 암호화 알고리즘 CAMELLIA 지정, 128, 192, 256비트 키 지원, 블록 암호화 작업 모드는 ECB, CBC, CFB128, CTR, GCM, CCM 지원

1
const crypto.CAMELLIA = 4;

ARIA

대칭 암호화 알고리즘 ARIA 지정, 128, 192, 256비트 키 지원, 블록 암호화 작업 모드는 ECB, CBC, CFB128, CTR, GCM, CCM 지원

1
const crypto.ARIA = 5;

CHACHA20

대칭 암호화 알고리즘 CHACHA20을 지정하고 256비트 키를 지원하며 블록 암호 작업 모드는 POLY1305를 지원합니다.

1
const crypto.CHACHA20 = 6;

SM4

대칭 암호화 알고리즘 SM4 지정, 블록 암호화 작업 모드는 ECB, CBC 지원

1
const crypto.SM4 = 7;

ECB

ECB를 지원하도록 블록 암호 작업 모드를 지정합니다.

1
const crypto.ECB = 1;

CBC

CBC를 지원하도록 블록 암호 작업 모드를 지정합니다.

1
const crypto.CBC = 2;

CFB64

CFB64를 지원하도록 블록 암호 작업 모드를 지정합니다.

1
const crypto.CFB64 = 3;

CFB128

CFB128을 지원하도록 블록 암호 작업 모드를 지정합니다.

1
const crypto.CFB128 = 4;

OFB

OFB를 지원하도록 블록 암호 작업 모드를 지정합니다.

1
const crypto.OFB = 5;

CTR

CTR을 지원하도록 블록 암호 작업 모드를 지정합니다.

1
const crypto.CTR = 6;

GCM

GCM을 지원하도록 블록 암호 작업 모드를 지정합니다.

1
const crypto.GCM = 7;

STREAM

스트림 암호화 모드 지정

1
const crypto.STREAM = 8;

CCM

CCM을 지원하도록 블록 암호 작업 모드를 지정합니다.

1
const crypto.CCM = 9;

XTS

XTS를 지원하도록 블록 암호 작업 모드를 지정합니다.

1
const crypto.XTS = 10;

POLY1305

POLY1305를 지원하도록 블록 암호 작업 모드를 지정합니다.

1
const crypto.POLY1305 = 11;

PKCS7

패딩 모드를 PKCS7로 지정

1
const crypto.PKCS7 = 0;

ONE_AND_ZEROS

채우기 모드를 ONE_AND_ZEROS로 지정

1
const crypto.ONE_AND_ZEROS = 1;

ZEROS_AND_LEN

채우기 모드를 ZEROS_AND_LEN으로 지정

1
const crypto.ZEROS_AND_LEN = 2;

ZEROS

채우기 모드를 0으로 지정

1
const crypto.ZEROS = 3;

NOPADDING

패딩 모드를 NOPADDING으로 지정

1
const crypto.NOPADDING = 4;