>  기사  >  웹 프론트엔드  >  JavaScript를 사용하여 AES 암호화를 구현하는 방법

JavaScript를 사용하여 AES 암호화를 구현하는 방법

PHPz
PHPz원래의
2023-04-26 10:34:448771검색

인터넷이 대중화되고 데이터 전송 빈도가 높아짐에 따라 데이터 보안 문제가 점점 더 중요해지고 있습니다. 데이터 보안을 보장하기 위해 암호화 알고리즘이 널리 사용됩니다. AES(Advanced Encryption Standard)는 현재 가장 일반적으로 사용되는 대칭 암호화 알고리즘 중 하나로 데이터 전송 및 저장 시 암호화 보호를 위해 널리 사용됩니다.

이 글에서는 JavaScript를 사용하여 AES 암호화를 구현하는 방법을 자세히 소개합니다.

1. AES 암호화 이해하기

AES 암호화 알고리즘은 대칭 암호화 알고리즘입니다. 즉, 일반적으로 "비밀 키"라고 불리는 암호화와 복호화에 동일한 키가 사용됩니다. AES는 데이터를 암호화하고 해독할 수 있습니다. AES의 키 길이는 128비트, 192비트 또는 256비트일 수 있습니다. 다양한 길이의 키를 사용하면 다양한 보안 수준을 달성할 수 있습니다.

AES 암호화 알고리즘은 본질적으로 키와 초기화 벡터(IV)를 사용하여 암호화 또는 암호 해독 작업을 수행하고 암호문 또는 일반 텍스트를 생성하는 대체 및 순열 암호화 알고리즘입니다. AES 암호화 알고리즘은 ECB(전자 코드북), CBC(암호 블록 체인) 및 CTR(카운터 모드)의 세 가지 모드로 구분됩니다. 이 문서에서는 고급 암호화 표준 모드(CTR)를 사용합니다.

2. CryptoJS 라이브러리 소개

CryptoJS는 AES 암호화를 포함한 여러 암호화 알고리즘을 지원하는 강력한 JavaScript 암호화 라이브러리입니다. AES 암호화 구현을 시작하기 전에 CryptoJS 암호화 라이브러리를 도입해야 합니다. CryptoJS는 JavaScript 스크립트 태그를 통해 도입하거나 다운로드한 js 파일을 직접 사용하여 도입할 수 있습니다.

AES 암호화의 무결성과 실용성을 반영하기 위해 여기서는 download.min.js를 선택하여 CryptoJS 라이브러리를 소개합니다.

<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/crypto-js.min.js"></script>

3. AES 암호화 구현

CryptoJS를 사용하여 AES 암호화를 구현하는 것은 매우 간단합니다. 암호화된 암호문을 얻으려면 일반 텍스트와 키만 전달하면 됩니다. 다음은 CTR 모드 기반 AES 암호화의 예입니다.

/**
 * AES加密方法
 * @param {*} data 明文
 * @param {*} key 密钥
 * @returns 密文
 */
function aesEncrypt(data, key) {
  // OpenSSL向量
  var iv = CryptoJS.lib.WordArray.random(16);
  var encrypted = CryptoJS.AES.encrypt(data, key, {
    iv: iv,
    mode: CryptoJS.mode.CTR,
    padding: CryptoJS.pad.Pkcs7
  });
  // 将密钥和向量进行拼接,一起返回
  return encrypted.ciphertext.toString(CryptoJS.enc.Base64) + ':' + iv.toString(CryptoJS.enc.Hex);
}

위 코드는 들어오는 일반 텍스트와 키를 매개 변수로 사용하고 임의의 벡터를 생성하며 AES 암호화에 CTR 모드를 사용하고 마지막으로 암호화된 암호문과 벡터를 연결하여 반환합니다. .

4. AES 암호 해독 구현

CryptoJS를 사용하여 AES 암호 해독을 구현하는 것도 마찬가지로 쉽습니다. 암호화된 암호문과 키를 전달하면 해독된 일반 텍스트를 얻을 수 있습니다.

/**
 * AES解密方法
 * @param {*} data 密文
 * @param {*} key 密钥
 * @returns 明文
 */
function aesDecrypt(data, key) {
  // 拆分密文和向量
  var parts = data.split(':');
  var ciphertext = CryptoJS.enc.Base64.parse(parts[0]);
  var iv = CryptoJS.enc.Hex.parse(parts[1]);
  var decrypted = CryptoJS.AES.decrypt({ ciphertext: ciphertext }, key, {
    iv: iv,
    mode: CryptoJS.mode.CTR,
    padding: CryptoJS.pad.Pkcs7
  });
  return decrypted.toString(CryptoJS.enc.Utf8);
}

위 코드는 들어오는 암호문과 키를 매개변수로 취하고, 암호문과 벡터를 분할하고, CTR 모드를 사용하여 AES 암호 해독 작업을 수행하고, 마지막으로 암호 해독된 일반 텍스트를 반환합니다.

5. AES 암호화 및 복호화 테스트

위 코드를 구현한 후 다음과 같이 AES 암호화 및 복호화 테스트를 수행합니다.

// 初始化密钥
var key = CryptoJS.enc.Utf8.parse('qwer1234qwer1234');

// 加密测试
var data = 'Hello World';
var encrypted = aesEncrypt(data, key);
console.log('加密后的密文:', encrypted);

// 解密测试
var decrypted = aesDecrypt(encrypted, key);
console.log('解密后的明文:', decrypted);

위 코드를 실행하여 AES 암호화 및 복호화 기능을 테스트할 수 있습니다. 콘솔 AES 암호화된 암호문과 해독된 일반 텍스트.

6. 요약

위는 JavaScript를 사용하여 AES 암호화를 구현하는 구체적인 프로세스입니다. CryptoJS 암호화 라이브러리의 도움으로 AES 암호화 및 암호 해독을 쉽게 구현할 수 있습니다. AES 암호화 알고리즘은 데이터 보안 분야에서 널리 사용됩니다. 데이터 보안 문제가 우려되는 경우 이 알고리즘을 배우고 사용하여 데이터 암호화를 구현할 수 있습니다.

위 내용은 JavaScript를 사용하여 AES 암호화를 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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