· 6 years ago · Jun 29, 2019, 06:20 PM
1<?php
2
3# 제가 테스트한 버전은 PHP 5.3.3 버전입니다.
4# PHP 버전에 따라 다를 수 있으니 혹시 암호화 결과가 다르다면 버전을 확인해주세요.
5# 아마 5.3 이하나 7.0 이상 버전의 PHP 에서는 문제가 될 소지가 있습니다.
6$plain_text = '안녕하세요 HelloWorld';
7$secret_key = 'fakecodingsecretfakecodingsecret';
8function aes_encode($plain_text, $secret_key) {
9 // iv 값은 16 바이트로 설정합니다.
10 // $ivBytes = chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00);
11 $ivBytes = chr(0).chr(0).chr(0).chr(0).chr(0).chr(0).chr(0).chr(0).chr(0).chr(0).chr(0).chr(0).chr(0).chr(0).chr(0).chr(0);
12 // $ivBytes = chr(1).chr(2).chr(3).chr(4).chr(1).chr(2).chr(3).chr(4).chr(1).chr(2).chr(3).chr(4).chr(1).chr(2).chr(3).chr(4);
13 return base64_encode(openssl_encrypt($plain_text, "AES-256-CBC", $secret_key, true, $ivBytes));
14}
15function aes_decode($encrypt_text, $secret_key) {
16 // iv 값은 16 바이트로 설정합니다.
17 // $ivBytes = chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00);
18 $ivBytes = chr(0).chr(0).chr(0).chr(0).chr(0).chr(0).chr(0).chr(0).chr(0).chr(0).chr(0).chr(0).chr(0).chr(0).chr(0).chr(0);
19 // $ivBytes = chr(1).chr(2).chr(3).chr(4).chr(1).chr(2).chr(3).chr(4).chr(1).chr(2).chr(3).chr(4).chr(1).chr(2).chr(3).chr(4);
20 return openssl_decrypt(base64_decode($encrypt_text), "AES-256-CBC", $secret_key, true, $ivBytes);
21}
22$encrypt_text = aes_encode($plain_text, $secret_key);
23$decrypt_text = aes_decode($encrypt_text, $secret_key);
24echo "encrypt_text = ".$encrypt_text;
25echo '<br>';
26echo "decrypt_text = ".$decrypt_text;