JavaScript
345. (javaScript) [CryptoJS 라이브러리] - 자바스크립트 CryptoJS AES 및 PBKDF2 사용해 AES256 인코딩 - key , iv , salt
투케이2K
2024. 3. 5. 10:17
[개발 환경 설정]
개발 툴 : Edit++
개발 언어 : JavaScript
[소스 코드]
<!-- ===================================================================================================== -->
<!-- [CDN 주소 설정] -->
<!-- ===================================================================================================== -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/crypto-js.min.js"></script>
<!-- ===================================================================================================== -->
<!-- ===================================================================================================== -->
<!-- [자바스크립트 코드 지정] -->
<!-- ===================================================================================================== -->
<script>
// =======================================================================
// [자바스크립트 라이프 사이클 및 상태 변경 감지 부분]
// =======================================================================
window.onload = function() {
console.log("")
console.log("==============================================================================")
console.log("[window onload] : [start]");
console.log("==============================================================================")
console.log("")
/**
* -------------------------------------------------
* [요약 설명]
* -------------------------------------------------
* window.onload : 브라우저 로드 완료 상태를 나타냅니다
* -------------------------------------------------
* CryptoJS : 데이터 암호화를 지원해주는 라이브러리입니다 (ex : aes, sha ...)
* -------------------------------------------------
* aes 암호화 : 비밀키 방식으로 인코딩, 디코딩 시 비밀키를 사용합니다
* -------------------------------------------------
* aes 256 : 비밀키 값이 32 바이트 값입니다
* -------------------------------------------------
* lv 바이트 배열값은 16 바이트 고정입니다
* -------------------------------------------------
* */
// [초기 변수 선언]
let secretKey = "0123456789abcdef0123456789abcdef" // [32 byte]
let iv = "0123456789abcdef" // [16 byte]
let salt = "0123456789abcdef0123456789abcdef" // [32 byte]
const iterations = 10000
const data = "hello" // [암호화에 사용할 데이터]
const key = CryptoJS.PBKDF2(secretKey, CryptoJS.enc.Utf8.parse(salt), {
keySize: 256 / 32, // 키 길이 (32 바이트)
iterations, // 반복 횟수
})
// [AES 인코딩 수행]
const encrypted = CryptoJS.AES.encrypt(data, key, {
iv: CryptoJS.enc.Utf8.parse(iv), // [Enter IV (Optional) 지정 방식]
padding: CryptoJS.pad.Pkcs7,
mode: CryptoJS.mode.CBC // [cbc 모드 선택]
});
// [로그 출력 수행]
console.log("")
console.log("==============================================================================")
console.log("[Log] :: [Result]")
console.log("----------------------------------------------")
console.log("secretKey : ", secretKey)
console.log("----------------------------------------------")
console.log("iv : ", iv)
console.log("----------------------------------------------")
console.log("salt : ", salt)
console.log("----------------------------------------------")
console.log("origin data : ", data)
console.log("----------------------------------------------")
console.log("encrypted data : ", encrypted.toString())
console.log("==============================================================================")
console.log("")
};
</script>
[결과 출력]
반응형