crypto는 node.js에서 암호화 및 복호화를 구현하는 모듈입니다. 다음 글에서는 암호화 모듈을 소개하고 해싱(해시) 알고리즘, HMAC 알고리즘, 대칭 암호화 및 비대칭에 암호화 모듈을 사용하는 방법을 소개합니다. 암호화 방법.
crypto
是node.js
中实现加密和解密的模块,在node.js
中,使用OpenSSL
类库作为内部实现加密解密的手段, OpenSSL
는 엄격한 테스트를 거쳐 안정적인 암호화 및 복호화 알고리즘 구현 도구입니다. [추천 학습: "nodejs 튜토리얼"]
windows 버전 openSSL 다운로드
http://dl.pconline.com.cn/download/355862-1.html
해시 알고리즘은 해시 알고리즘이라고도 하며, 모든 길이의 입력을 고정 길이 출력으로 변환하는 데 사용됩니다. 일반적인 알고리즘으로는 md5, sha1 등이 있습니다.
console.log(crypto.getHashes());
crypto.createHash(algorithm);//创建HASH对象 hash.update(data,[input_encoding]);//增加要添加摘要的数据,摘要输出前可以使用多次update hash.digest([encoding]);//输出摘要内容,输出后则不能再添加摘要内容
var crypto = require('crypto'); var md5 = crypto.createHash('md5');//返回哈希算法 var md5Sum = md5.update('hello');//指定要摘要的原始内容,可以在摘要被输出之前使用多次update方法来添加摘要内容 var result = md5Sum.digest('hex');//摘要输出,在使用digest方法之后不能再向hash对象追加摘要内容。 console.log(result);
다중 업데이트
var fs = require('fs'); var shasum = crypto.createHash('sha1');//返回sha1哈希算法 var rs = fs.createReadStream('./readme.txt'); rs.on('data', function (data) { shasum.update(data);//指定要摘要的原始内容,可以在摘要被输出之前使用多次update方法来添加摘要内容 }); rs.on('end', function () { var result = shasum.digest('hex');//摘要输出,在使用digest方法之后不能再向hash对象追加摘要内容。 console.log(result); })
HMAC 알고리즘은 해싱 알고리즘과 키를 결합하여 서명 무결성 손상을 방지합니다
let hmac crypto.createHmac(algorithm,key); hmac.update(data);
PEM은 다음의 표준 형식입니다. OpenSSL은 PEM 파일 형식을 사용하여 Base64로 인코딩된 인증서를 기반으로 하는 인증서와 키를 저장합니다.
$ openssl genrsa -out rsa_private.key 1024
let pem = fs.readFileSync(path.join(__dirname, './rsa_private.key')); let key = pem.toString('ascii'); let hmac = crypto.createHmac('sha1', key); let rs = fs.createReadStream(path.join(__dirname, './1.txt')); rs.on('data', function (data) { hmac.update(data); }); rs.on('end', function () { let result = hmac.digest('hex'); console.log(result); });
var crypto = require('crypto'); var fs = require('fs'); let str = 'hello'; let cipher = crypto.createCipher('blowfish', fs.readFileSync(path.join(__dirname, 'rsa_private.key'))); let encry = cipher.update(str, 'utf8','hex'); encry += cipher.final('hex'); console.log(encry); let deciper = crypto.createDecipher('blowfish', fs.readFileSync(path.join(__dirname, 'rsa_private.key'))); let deEncry = deciper.update(encry, 'hex','utf8'); deEncry += deciper.final('utf8'); console.log(deEncry);
개인 키에 대한 공개 키 만들기
openssl rsa -in rsa_private.key -pubout -out rsa_public.key
var crypto = require('crypto'); var fs = require('fs'); let key = fs.readFileSync(path.join(__dirname, 'rsa_private.key')); let cert = fs.readFileSync(path.join(__dirname, 'rsa_public.key')); let secret = crypto.publicEncrypt(cert, buffer);//公钥加密 let result = crypto.privateDecrypt(key, secret);//私钥解密 console.log(result.toString());6. 서명
를 통해 서명을 확인하여 이 데이터가 개인 키 소유자가 보낸 원본 데이터이고 전송 중에 수정되지 않았는지 확인할 수 있습니다. 네트워크를 통해.
let private = fs.readFileSync(path.join(__dirname, 'rsa_private.key'), 'ascii'); let public = fs.readFileSync(path.join(__dirname, 'rsa_public.key'), 'ascii'); let str = 'zhufengpeixun'; let sign = crypto.createSign('RSA-SHA256'); sign.update(str); let signed = sign.sign(private, 'hex'); let verify = crypto.createVerify('RSA-SHA256'); verify.update(str); let verifyResult = verify.verify(public,signed,'hex'); //true
원본 주소 : https://juejin.cn/post/6844903800491376653
더 많은 프로그래밍 관련 지식을 보시려면프로그래밍 영상
을 방문해 주세요! !
위 내용은 한 기사로 Nodejs의 암호화 모듈 사용법을 빠르게 이해하세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!