>웹 프론트엔드 >JS 튜토리얼 >Node.js의 비대칭 암호화에 대한 코드 예제

Node.js의 비대칭 암호화에 대한 코드 예제

亚连
亚连원래의
2018-06-09 10:51:292700검색

이 글은 주로 Node.js 비대칭 암호화 방법과 코드 예제를 공유합니다. 이에 관심이 있는 친구들은 참고할 수 있습니다.

머리말

SegmentFault에서 한 형제가 제기한 "비대칭 암호 해독 오류" 질문에 방금 답변했습니다. 이것은 Node.js의 보안 애플리케이션입니다. 동일한 문제에 직면한 사람들이 많을 것입니다. 답변된 질문을 바탕으로 여기에 간략한 요약이 있습니다.

비대칭 암호화에 대한 이론적 지식은 저자의 이전 기사 "NODEJS Advanced: Theory of CRYPTO Module"을 참조할 수 있습니다.

전체 코드는 "Nodejs 학습 노트"에서 찾을 수 있습니다. 또한 프로그래머 Xiaoka의 GitHub를 팔로우하실 수도 있습니다.

암호화 및 복호화 방법

Node.js에서 보안을 담당하는 모듈은 crypto입니다. 비대칭 암호화에서 공개키 암호화, 개인키 복호화, 이에 대응하는 암호화 및 복호화 API는 다음과 같습니다.

암호화 기능:

crypto.publicEncrypt(key, buffer)

복호화 기능:

crypto.privateDecrypt(privateKey, buffer)

시작하기 예

다음 utils.js

// utils.js
const crypto = require('crypto');
// 加密方法
exports.encrypt = (data, key) => {
 // 注意,第二个参数是Buffer类型
 return crypto.publicEncrypt(key, Buffer.from(data));
};
// 解密方法
exports.decrypt = (encrypted, key) => {
 // 注意,encrypted是Buffer类型
 return crypto.privateDecrypt(key, encrypted);
};

테스트 코드 app.js가 있다고 가정합니다.

const utils = require('./utils');
const keys = require('./keys');
const plainText = '你好,我是程序猿小卡';
const crypted = utils.encrypt(plainText, keys.pubKey); // 加密
const decrypted = utils.decrypt(crypted, keys.privKey); // 解密
console.log(decrypted.toString()); // 你好,我是程序猿小卡

공개 키와 개인 키 키를 연결합니다.keys.js:

exports.privKey = `-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDFWnl8fChyKI/Tgo1ILB+IlGr8ZECKnnO8XRDwttBbf5EmG0qV
8gs0aGkh649rb75I+tMu2JSNuVj61CncL/7Ct2kAZ6CZZo1vYgtzhlFnxd4V7Ra+
aIwLZaXT/h3eE+/cFsL4VAJI5wXh4Mq4Vtu7uEjeogAOgXACaIqiFyrk3wIDAQAB
AoGBAKdrunYlqfY2fNUVAqAAdnvaVOxqa+psw4g/d3iNzjJhBRTLwDl2TZUXImEZ
QeEFueqVhoROTa/xVg/r3tshiD/QC71EfmPVBjBQJJIvJUbjtZJ/O+L2WxqzSvqe
wzYaTm6Te3kZeG/cULNMIL+xU7XsUmslbGPAurYmHA1jNKFpAkEA48aUogSv8VFn
R2QuYmilz20LkCzffK2aq2+9iSz1ZjCvo+iuFt71Y3+etWomzcZCuJ5sn0w7lcSx
nqyzCFDspQJBAN3O2VdQF3gua0Q5VHmK9AvsoXLmCfRa1RiKuFOtrtC609RfX4DC
FxDxH09UVu/8Hmdau8t6OFExcBriIYJQwDMCQQCZLjFDDHfuiFo2js8K62mnJ6SB
H0xlIrND2+/RUuTuBov4ZUC+rM7GTUtEodDazhyM4C4Yq0HfJNp25Zm5XALpAkBG
atLpO04YI3R+dkzxQUH1PyyKU6m5X9TjM7cNKcikD4wMkjK5p+S2xjYQc1AeZEYq
vc187dJPRIi4oC3PN1+tAkBuW51/5vBj+zmd73mVcTt28OmSKOX6kU29F0lvEh8I
oHiLOo285vG5ZtmXiY58tAiPVQXa7eU8hPQHTHWa9qp6
-----END RSA PRIVATE KEY-----
`;
exports.pubKey = `-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDFWnl8fChyKI/Tgo1ILB+IlGr8
ZECKnnO8XRDwttBbf5EmG0qV8gs0aGkh649rb75I+tMu2JSNuVj61CncL/7Ct2kA
Z6CZZo1vYgtzhlFnxd4V7Ra+aIwLZaXT/h3eE+/cFsL4VAJI5wXh4Mq4Vtu7uEje
ogAOgXACaIqiFyrk3wIDAQAB
-----END PUBLIC KEY-----
`;

위의 내용은 앞으로 모든 사람에게 도움이 되기를 바랍니다.

관련 기사:

WeChat 애플릿에서 이미지 미리보기 기능을 구현하는 방법

vue를 사용하여 Baidu 통계를 구현하는 방법

WeChat 애플릿을 사용하여 MUI 숫자 입력 상자 효과를 구현하는 방법

render in Vue 기본 기능 사용법(자세한 튜토리얼)

WeChat 미니 프로그램에서 갤러리 슬라이더 구성 요소를 사용하는 방법

스크롤 뷰 구성 요소를 사용하여 WeChat 미니 프로그램에서 스크롤 애니메이션을 구현하는 방법

관련 위챗 미니 프로그램에서 체크박스 컴포넌트 사용

위 내용은 Node.js의 비대칭 암호화에 대한 코드 예제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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