node 기반 RSA 복호화 방법 절차

3846 단어 nodeRSA복호화
프로젝트 로그 인 암호 필드 가 암호 화 되 지 않 아 보안 문제 가 발생 했 습 니 다.RSA 암호 화 를 기반 으로 전후 단 통신(자바 프로젝트)을 하 는 방법 을 생각 했 습 니 다.여가 시간 에 node 에서 의 실현 을 보 았 다.
준비 하 다
전단 은jsencrypt.js을 이용 하여 암호 화 되 고 백 엔 드 는node-rsa를 이용 하여 공개 키 를 생 성하 고 복호화 합 니 다.
실현
저 는 koa 2 를 사용 하여 초기 화 된 프로젝트 입 니 다.우선,전단 페이지 에 암호 화 된 데 이 터 를 표시 하고 처리 해 야 하기 때문에 views 에 index.html 를 직접 새로 만 들 었 습 니 다.html 로 템 플 릿 을 배우 지 않 기 위해 시간 을 들 였 습 니 다.
index 의 경로 수정,

router.get('/', async (ctx, next) => {
  await ctx.render('index.html');
});
html 에 jsencrypt.js 를 도입 합 니 다.인터페이스 내용 은 입력 상자 와 명령 을 보 내 는 단추 만 있 습 니 다.

<body>
  <input type="text" id="content"/>
  <button id="start">gogogog</button>
</body>
<script src="/javascripts/jsencrypt.js"></script>
<script>
document.getElementById('start').onclick = function() {
  //     
  fetch('/publicKey').then(function(res){
    return res.text();
  }).then(function(publicKey) {
    //        
    var encrypt = new JSEncrypt();
    encrypt.setPublicKey(publicKey);
    var encrypted = encrypt.encrypt(document.getElementById('content').value);
    //        
    fetch('/decryption', {
      method: 'POST',
      body: JSON.stringify({value:encrypted})
    }).then(function(data) {
      return data.text();
    }).then(function(value) {
      console.log(value);
    });
  });
};
</script>
단 추 를 누 르 면 입력 상자 의 값 을 암호 화하 고 서버 에 복호화 하고 인쇄 합 니 다.
프론트 엔 드 에 서 는 publicKey 와 decryption 인 터 페 이 스 를 사용 하여 서버 의 실현 을 살 펴 보 았 습 니 다.
먼저 node-rsa 패 키 지 를 도입 하고 인 스 턴 스 를 만 든 다음 에 공개 키 를 출력 합 니 다.그 중에서 setOptions 는 반드시 추가 해 야 합 니 다.오류 가 발생 할 수 있 습 니까?

const NodeRSA = require('node-rsa');
const key = new NodeRSA({b: 1024});
//    https://github.com/rzcoder/node-rsa/issues/91
key.setOptions({encryptionScheme: 'pkcs1'}); //     ,      。
publickey(GET)는 공개 키 를 가 져 오 는 데 사 용 됩 니 다.내 장 된 방법 만 호출 하면 됩 니 다.

router.get('/publicKey', async (ctx, next) => {
  var publicDer = key.exportKey('public');
  var privateDer = key.exportKey('private');
  console.log('  :', publicDer);
  console.log('  :', privateDer);
  ctx.body = publicDer;
});
공개 키 는 전단 암호 화 에 사용 되 고 백 엔 드 는 비밀 키 를 사용 하여 복호화 합 니 다.

router.post('/decryption', async (ctx, next) => {
  var keyValue = JSON.parse(ctx.request.body).value;
  const decrypted = key.decrypt(keyValue, 'utf8');
  console.log('decrypted: ', decrypted);
  ctx.body = decrypted;
});
복호화 할 때 decrypt 를 호출 하여 복호화 하면 전단 콘 솔 에서 해당 하 는 값 을 출력 할 수 있 습 니 다.
데모 상세 코드
이렇게 많은 말 을 하면 코드 를 직접 보 는 것 이 가장 직관 적 입 니 다.상세 한 코드 는 다음 과 같 습 니 다.demo

npm i & npm run start
3000 포트 에 접근 하면 됩 니 다.
4.실제 항목
npm 설치 방식(vue 또는 react)을 사용 하 는 항목 에서 다음 과 같이 사용 할 수 있 습 니 다.

npm i jsencrypt
//     
import { JSEncrypt } from 'jsencrypt';
프로젝트 주 소 를 볼 수 있 습 니 다.https://github.com/2fps/blooog
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기