본문 바로가기

기초 문법/자바스크립트

[JavaScript] AES128 암호화/복호화

자바스크립트에서 AES128를 이용하여 양방향 암호화 및 복호화를 하는 예제입니다. Hash 암호화와는 다르게 양방향이므로 대칭키를 가지고 있으며, AES128, AES192, AES256 등 키의 bit수의 따라 나뉘게 됩니다.

 AES128 은 16byte로써 키의 길이가 16자리인 암호 방식입니다. 

 

 키의 길이에 따라 라운드의 수가 다르며 AES 암호 알고리즘에서 마지막 라운드에서는 MixColumn 단계가 없다.

 AES 이론적인 내용을 참고하시려면 https://www.crocus.co.kr/1230 등을 참고해주시기 바랍니다.

 

 

# Contents


  • 전체 코드

 

 

# 전체 코드


 AES128 암호화 및 복호화 코드 예제입니다.

 

const Crypto = require("crypto");

var key = "abcdefghijklmnop";
var plainText = "Java와 JavaScript 에서 AES 암호화/복호화";

function enCrypt(plainText, key) {
    plainText = Buffer.from(plainText);
    let cipher = Crypto.createCipheriv("AES-128-ECB", key, "");
    let encrypted = cipher.update(plainText, "", "");
    return Buffer.concat([encrypted, cipher.final()]).toString("base64");
}

function deCrypt(encryptText, key) {
    encryptText = Buffer.from(encryptText, "base64");
    let cipher = Crypto.createDecipheriv("AES-128-ECB", key, "");
    let decrypted = cipher.update(encryptText);
    return Buffer.concat([decrypted, cipher.final()]).toString("utf-8");
}

var encryptText = enCrypt(plainText, key);
console.log(encryptText);

var plainText = deCrypt(encryptText, key);
console.log(plainText);

 

 결과는 아래와 같습니다.

 

 

 자바에서 처리한 결과 값과 동일하게 얻어짐을 확인할 수 있습니다.

 

 

 

 

 

'기초 문법 > 자바스크립트' 카테고리의 다른 글

[jQuery] jQuery 정리  (0) 2021.11.23
[Java] 자바로 SCP 전송  (0) 2021.09.29
[JavaScript] Decorator  (0) 2021.09.28
객체에서 배열, 배열에서 객체  (0) 2021.09.24
자바스크립트 객체 복사  (0) 2021.09.24