자바스크립트에서 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 |