객체암호
대칭 암호화 알고리즘 개체
암호 객체는 다음에 속합니다.crypto모듈, 생성:
1var c = new crypto.Cipher(crypto.AES, crypto.ECB, ...);
다음은 암호화 및 암호 해독을 위해 Cipher 객체를 사용하는 방법을 보여주기 위한 예로 AES를 사용합니다.
먼저 AES 암호화 알고리즘과 같이 대칭적으로 암호화된 Cipher 개체를 가져와야 합니다.
1
2
3const crypto = require('crypto');
const key = crypto.randomBytes(16); // generate a 16-byte random key
const cipher = new crypto.Cipher(crypto.AES, crypto.ECB, key);
위 코드에서는 randomBytes
메소드를 통해 AES 키로 16바이트 난수를 생성했습니다. 그런 다음 ECB 블록 암호 작업 모드를 사용하고 생성된 난수를 키로 사용하여 AES 알고리즘의 Cipher 개체를 생성했습니다.
다음으로 encrypt
Cipher 객체의 메서드를 사용하여 일반 텍스트를 암호화합니다.
1
2
3const plaintext = 'Hello, world!';
const encrypted = cipher.encrypt(plaintext);
console.log(encrypted); // output encrypted data
위의 코드에서는 문자열을 암호화 하고 암호화된 결과를 출력 encrypt
하는 메서드를 사용합니다.Hello, world!
위 코드와 관련하여 다음 사항에 주의해야 합니다.
- 암호화를 수행하기 전에 대칭적으로 암호화된 Cipher 객체를 생성하고 암호화 알고리즘, 비밀번호, 블록 암호화 작업 모드와 같은 매개변수를 설정해야 합니다.
- 암호화 메소드를 호출한 후, 우리는 암호화된 데이터를 얻을 수 있습니다.Buffer물체. 출력은 바이너리 데이터이므로 변환을 위해 사용 등의 해당 방법으로 인쇄해야 합니다
Hex
.
데이터를 해독하려면 AES 알고리즘을 기반으로 하며 동일한 키 및 블록 암호 작업 모드를 사용하는 Cipher 개체도 필요합니다.
1
2
3const decipher = new crypto.Cipher(crypto.AES, crypto.ECB, key);
const decrypted = decipher.decrypt(encrypted);
console.log(decrypted.toString()); // output decrypted data
여기서는 새로운 Cipher 객체를 생성하고, 동일한 키와 비밀번호 작업 모드를 사용하고, decrypt
암호화된 데이터를 해독하는 방법을 사용합니다. 해독 결과는 다음과 같습니다.Buffer올바르게 출력하려면 개체를 문자열로 변환해야 합니다.
상속관계
건설자
Cipher
ARC4 초기화에만 사용되는 암호 생성자
1
2new Cipher(Integer provider,
Buffer key);
호출 매개변수:
- provider: 정수, 암호화 알고리즘을 지정합니다.
- key:Buffer, 암호화 및 복호화 비밀번호를 지정하세요
암호 생성자
1
2
3new Cipher(Integer provider,
Integer mode,
Buffer key);
호출 매개변수:
- provider: 정수, 암호화 알고리즘을 지정합니다.
- mode: 정수, 블록 암호 작업 모드를 지정합니다.
- key:Buffer, 암호화 및 복호화 비밀번호를 지정하세요
암호 생성자
1
2
3
4new Cipher(Integer provider,
Integer mode,
Buffer key,
Buffer iv);
호출 매개변수:
- provider: 정수, 암호화 알고리즘을 지정합니다.
- mode: 정수, 블록 암호 작업 모드를 지정합니다.
- key:Buffer, 암호화 및 복호화 비밀번호를 지정하세요
- iv:Buffer, 초기 벡터를 지정합니다
구성원 속성
name
문자열, 현재 알고리즘 이름을 반환합니다.
1readonly String Cipher.name;
keySize
정수, 현재 알고리즘 비밀번호 길이를 비트 단위로 반환합니다.
1readonly Integer Cipher.keySize;
ivSize
정수, 현재 알고리즘의 초기 벡터 길이를 바이트 단위로 반환합니다.
1readonly Integer Cipher.ivSize;
blockSize
정수, 현재 알고리즘 데이터 블록 길이를 바이트 단위로 반환합니다.
1readonly Integer Cipher.blockSize;
멤버 함수
paddingMode
채우기 모드 사용
1Cipher.paddingMode(Integer mode);
호출 매개변수:
- mode: 정수, 패딩 모드를 지정하며 기본값은 PADDING_PKCS7입니다.
encrypt
현재 알고리즘 암호를 사용하여 데이터 암호화
1Buffer Cipher.encrypt(Buffer data) async;
호출 매개변수:
- data:Buffer, 암호화할 데이터를 지정합니다.
결과 반환:
- Buffer, 암호화된 데이터를 반환합니다.
decrypt
현재 알고리즘 암호를 사용하여 데이터 암호 해독
1Buffer Cipher.decrypt(Buffer data) async;
호출 매개변수:
- data:Buffer, 해독할 데이터를 지정합니다.
결과 반환:
- Buffer, 해독된 데이터를 반환합니다.
toString
객체의 문자열 표현을 반환하며 일반적으로 "[Native Object]"를 반환하며 객체 자체의 특성에 따라 다시 구현될 수 있습니다.
1String Cipher.toString();
결과 반환:
- String, 객체의 문자열 표현을 반환합니다.
toJSON
객체의 JSON 형식 표현을 반환하며 일반적으로 객체에 의해 정의된 읽을 수 있는 속성 컬렉션을 반환합니다.
1Value Cipher.toJSON(String key = "");
호출 매개변수:
- key: 문자열, 사용되지 않음
결과 반환:
- Value, 직렬화 가능한 JSON을 포함하는 값을 반환합니다.