JavaScript 가 구현 하 는 전단 AES 암호 화 복호화 기능[CryptoJS 기반]

이 글 의 실례 는 자 바스 크 립 트 가 실현 한 전단 AES 암호 화 복호화 기능 을 다 루 고 있다.여러분 께 참고 하도록 공유 하 겠 습 니 다.구체 적 으로 는 다음 과 같 습 니 다.
js 전단 AES 암호 화
최근 프로젝트 수요 로 인해 MITM 를 한 번 했 는데 갑자기 HTTPS 를 사용 하 는 것 을 발견 하 더 라 도 데이터 전송 과정의 안전성 을 보장 할 수 없다.브로커 공격 을 통 해 Http 프로 토 콜 의 모든 내용 을 직접 얻 을 수 있 습 니 다.그래서 어느 정도 안전성 을 확보 하기 위해 간단 한 암호 화 를 시도 하기 시작 했다.
이번 에는 AES 암호 화 데 이 터 를 사용 하기 때문에 클 라 이언 트 와 서버 가 사용 하 는 같은 비밀 키 입 니 다.(프 리 젠 테 이 션 으로 만 RSA 를 추천 합 니 다)
우선 비밀번호 와 암호 화 에 사용 할 KEY 를 준비 하 겠 습 니 다.

var source = "ABCDEFG";
var aesKey = "8NONwyJtHesysWpM";

JS 암호 화 padding 과 mode 는 서버 와 대응 해 야 합 니 다.그렇지 않 으 면 복호화 할 수 없습니다.
key 는 문자열 형식 입 니 다.처리 하고 사용 해 야 합 니 다.
주:PKCS5Padding 과 PKCS7Padding 은 같 습 니 다.
상단 에 표 시 된 encrypted Data 는 암호 화 된 결과 입 니 다.
JS 복호화 코드
encrypted Data 는 암호 화 된 데이터 입 니 다.
JS 를 통 해 직접 암호 화 된 데 이 터 는 대상 이 므 로 직접 복호화 할 수 없습니다.Base 64 문자열 로 변환 해 야 복호화 할 수 있 습 니 다.
서버 는 Base 64 이후 의 암호 화 데 이 터 를 되 돌려 야 합 니 다.

encryptedData = encryptedData.ciphertext.toString();
var encryptedHexStr = CryptoJS.enc.Hex.parse(encryptedData);

먼저 운행 결 과 를 살 펴 보 자.
 
aes.js 파일 은 여 기 를 클릭 할 수 있 습 니 다본 사이트 다운로드
전체 테스트 코드 는 다음 과 같 습 니 다:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>www.jb51.net aes.js</title>
</head>
<script src="aes.js"></script>
<body>
<script>
  var key = CryptoJS.enc.Utf8.parse("8NONwyJtHesysWpM");
  var plaintText = 'ABCDEFGH'; //   
  var encryptedData = CryptoJS.AES.encrypt(plaintText, key, {
    mode: CryptoJS.mode.ECB,
    padding: CryptoJS.pad.Pkcs7
  });
  console.log("   :"+plaintText);
  console.log("   :"+encryptedData);
  encryptedData = encryptedData.ciphertext.toString();
  var encryptedHexStr = CryptoJS.enc.Hex.parse(encryptedData);
  var encryptedBase64Str = CryptoJS.enc.Base64.stringify(encryptedHexStr);
  var decryptedData = CryptoJS.AES.decrypt(encryptedBase64Str, key, {
    mode: CryptoJS.mode.ECB,
    padding: CryptoJS.pad.Pkcs7
  });
  var decryptedStr = decryptedData.toString(CryptoJS.enc.Utf8);
  console.log("   :"+decryptedStr);
   var pwd = "PCsUFtgog9/qpqmqXsuCRQ==";
  //          
  var decryptedData = CryptoJS.AES.decrypt(pwd, key, {
    mode: CryptoJS.mode.ECB,
    padding: CryptoJS.pad.Pkcs7
  });
  console.log("          :"+decryptedStr);
</script>
</body>
</html>

코드 에 aes.js 전체 코드 를 가 져 오고 온라인 HTML/CSS/JavaScript 코드 실행 도 구 를 사용 합 니 다http://tools.jb51.net/code/HtmlJsRun상기 실행 결 과 를 얻 을 수 있 습 니 다.
PS:암호 화 복호화 에 관심 이 있 는 친 구 는 본 사이트 의 온라인 도 구 를 참고 할 수 있 습 니 다.
온라인 AES 암호 화/복호화 도구:
http://tools.jb51.net/password/aes_encode
텍스트 온라인 암호 화 복호화 도구(AES,DES,RC4 등 포함):
http://tools.jb51.net/password/txt_encode
온라인 인 코딩 변환 도구(utf-8/utf-32/Punycode/Base 64):
http://tools.jb51.net/transcoding/decode_encode_tool
BASE 64 인 코딩 도구:
http://tools.jb51.net/transcoding/base64
온라인 MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160 암호 화 도구:
http://tools.jb51.net/password/hash_md5_sha
온라인 sha 1/sha 224/sha 256/sha 384/sha 512 암호 화 도구:
http://tools.jb51.net/password/sha_encode
더 많은 자 바스 크 립 트 관련 내용 은 본 사이트 의 주 제 를 볼 수 있 습 니 다.
본 고 에서 말 한 것 이 여러분 의 자 바스 크 립 트 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기