>  기사  >  웹 프론트엔드  >  NODE.JS 암호화 모듈 CRYPTO의 일반적인 방법 소개

NODE.JS 암호화 모듈 CRYPTO의 일반적인 방법 소개

高洛峰
高洛峰원래의
2016-12-26 09:18:141292검색

암호화 모듈을 호출하려면 require('crypto')를 사용하세요.

암호화 모듈을 사용하려면 OpenSSL 지원을 제공하는 기본 시스템이 필요합니다. 보안 자격 증명을 캡슐화하는 방법을 제공하며 일반 HTTP 연결은 물론 HTTPS 보안 네트워크에도 사용할 수 있습니다.

이 모듈은 OpenSSL 메소드 캡슐화를 위한 해시(해시), hmac(키 해시), 암호(인코딩), 해독(디코딩), 서명(서명) 및 확인(검증) 세트도 제공합니다.

crypto.createCredentials(details)

선택적 매개변수 세부정보는 키 값이 있는 사전입니다.
key: 문자열 유형, PEM으로 인코딩된 개인 키.
cert: 문자열 형식의 PEM 인코딩된 인증서입니다.
ca: 문자열 형식의 PEM 인코딩된 신뢰할 수 있는 CA 인증서 또는 인증서 목록입니다.

'ca' 세부정보가 제공되지 않으면 node.js는 http://mxr.mozilla.org/mozilla/source/security/nss/lib/ckfw/builtins에 있는 기본 공개 신뢰할 수 있는 목록을 사용합니다. /certdata.txt.

crypto.createHash(algorithm)

지정된 알고리즘의 암호화 해시이며 해시 다이제스트를 생성하는 데 사용되는 해시 객체를 생성하고 반환합니다.

매개변수 알고리즘은 시스템에 설치된 OpenSSL 버전에서 지원하는 알고리즘을 선택할 수 있습니다. 예: 'sha1', 'md5', 'sha256', 'sha512' 등 최근 릴리스에서는 openssl list-message-digest-algorithms에 사용 가능한 다이제스트 알고리즘이 표시됩니다.

hash.update(data)

해시 내용을 지정된 데이터로 업데이트합니다. 이 메서드는 스트리밍 데이터 작업 시 여러 번 호출될 수 있습니다.

hash.digest(encoding='binary')

수신되는 모든 데이터의 해시 다이제스트를 계산합니다. 인코딩 매개변수는 'hex', 'binary' 또는 'base64'일 수 있습니다.

crypto.createHmac(algorithm, key)

지정된 알고리즘과 키를 사용하는 암호화 hmac인 hmac 객체를 생성하고 반환합니다.

매개변수 알고리즘은 OpenSSL에서 지원하는 알고리즘을 선택할 수 있습니다. 위의 createHash를 참조하세요. 매개변수 키는 hmac에서 사용하는 키입니다.

hmac.update(data)

hmac의 내용을 지정된 데이터로 업데이트합니다. 이 메서드는 스트리밍 데이터 작업 시 여러 번 호출될 수 있습니다.

hmac.digest(encoding='binary')

수신되는 모든 데이터의 hmac 다이제스트를 계산합니다. 인코딩 매개변수는 'hex', 'binary' 또는 'base64'일 수 있습니다.

crypto.createCipher(algorithm, key)

지정된 알고리즘과 키를 사용하여 암호 객체를 생성하고 반환합니다.

매개변수 알고리즘은 'aes192' 등 OpenSSL에서 지원하는 알고리즘을 선택할 수 있습니다. 최근 릴리스에서는 openssl list-cipher-algorithms에 사용 가능한 암호화 알고리즘이 표시됩니다.

cipher.update(data, input_encoding='binary', output_encoding='binary')

암호화할 콘텐츠를 업데이트하려면 매개변수 데이터를 사용하세요. 인코딩 방법은 매개변수에 의해 지정됩니다. input_encoding은 'utf8', 'ascii' 또는 'binary'일 수 있습니다. 매개변수 output_encoding은 암호화된 콘텐츠의 출력 인코딩 방법('binary', 'base64' 또는 'hex')을 지정합니다.

암호화된 콘텐츠를 반환합니다. 이 메서드는 스트리밍 데이터를 사용할 때 여러 번 호출될 수 있습니다.

cipher.final(output_encoding='binary')

나머지 암호화된 콘텐츠를 모두 반환합니다. output_encoding 출력 인코딩은 'binary', 'ascii' 또는 'utf8' 중 하나입니다.

crypto.createDecipher(algorithm, key)

주어진 알고리즘과 키를 사용하여 복호화 개체를 생성하고 반환합니다. 이 개체는 위의 암호화된 개체와 반대입니다.

decipher.update(data, input_encoding='binary', output_encoding='binary')

복호화할 콘텐츠를 매개변수 데이터를 사용하여 업데이트하며, 인코딩 방식은 '바이너리'입니다. 'base64' 또는 '16진수'. 매개변수 output_encoding은 해독된 일반 텍스트 콘텐츠의 출력 인코딩 방법('binary', 'ascii' 또는 'utf8')을 지정합니다.

decipher.final(output_encoding='binary')

output_encoding'이 'binary', 'ascii' 또는 'utf8'` 중 하나인 해독된 나머지 일반 텍스트를 모두 반환합니다.

crypto.createSign(algorithm)

주어진 알고리즘을 사용하여 서명자 객체를 생성하고 반환합니다. 기존 OpenSSL 배포판에서 openssl list-public-key-algorithms는 사용 가능한 서명 알고리즘을 표시합니다(예: 'RSA-SHA256').

signer.update(data)

signer 객체를 업데이트하려면 data 매개변수를 사용하세요. 이 메서드는 스트리밍 데이터 작업 시 여러 번 호출될 수 있습니다.

signer.sign(private_key, output_format='binary')

서명자에게 전달된 모든 데이터의 서명을 계산합니다. private_key는 서명에 사용되는 PEM 인코딩 개인 키가 포함된 문자열입니다.

반환 서명, 해당 output_format 출력은 'binary', 'hex' 또는 'base64'일 수 있습니다.

crypto.createVerify(algorithm)

주어진 알고리즘을 사용하여 검증자 객체를 생성하고 반환합니다. 이는 위의 서명자 개체와 반대입니다.

verifier.update(data)

data 매개변수를 사용하여 유효성 검사기 개체를 업데이트합니다. 이 메서드는 스트리밍 데이터 작업 시 여러 번 호출될 수 있습니다.

verifier.verify(cert, 서명, 서명_format='바이너리')

서명된 데이터를 확인하려면 cert 및 서명 매개변수를 사용하세요. cert는 PEM으로 인코딩된 공개 키 문자열이고, 서명은 이전에 계산된 데이터의 서명이며, Signature_format은 'binary', 'hex' 또는 'base64'일 수 있습니다. .

데이터 및 공개키의 서명 유효성 검증 결과에 따라 true 또는 false를 반환합니다.

필요할 때 되돌릴 수 없는 암호화 코드 작성 방법

var text = "123|12312312123123121231231212312312123123121231231212312312";
var hasher=crypto.createHash("md5");
hasher.update(text);
var hashmsg=hasher.digest('hex');//hashmsg为加密之后的数据

암호화 및 복호화 환경이 필요할 때

var key="asdhjwheru*asd123-123";//加密的秘钥
var text = "123|12312312123123121231231212312312123123121231231212312312";
var crypted =cipher.update(text,'utf8','hex');
crypted+=cipher.final('hex');
var message=crypted;//加密之后的值
var decipher = crypto.createDecipher('aes-256-cbc',key);
var dec=decipher.update(message,'hex','utf8');
dec+= decipher.final('utf8');//解密之后的值

더보기 NODE.JS 암호화 결제해주세요 CRYPTO 모듈의 일반적인 방법을 소개하는 관련 기사는 PHP 중국어 웹사이트에 주목하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.