PHP

[PHP] 암호화 함수 openssl_encrypt 를 사용하여 암복호화 사용하기!

dev-mint 2022. 3. 3. 14:23

 

PHP 5.3 이상에서 사용할 수 있는 openssl_encrypt() 함수로

공통으로 사용할 수 있는 암호화, 복호화 함수를 만들어 보겠습니다.

 

https://www.php.net/manual/en/function.openssl-encrypt.php

 

PHP: openssl_encrypt - Manual

I saw that a doc bug(#80236) were there mentioned that $tag usage. Here is an examples, Hopes those may help someone. 16 || ($tagLength < 12 && $tagLength !== 8 && $tagLength !== 4)) {        throw new RuntimeException('The inputs `$ciphertext` incompl

www.php.net

 

 

암호화 openssl_encrypt()
<?php
// 암호화
function encrypt($plaintext, $key='') {
    if (!$key) $key = "test-key";

    return base64_encode(openssl_encrypt($plaintext, "AES-256-CBC", $key, true, str_repeat(chr(0), 16)));
}​

 

AES는 대칭키를 쓰는 암호화 방식으로

암복호화시 양쪽에서 동일한 대칭키를 가지고 있어야합니다.

저는 키 값을 지정하지 않으면 test-key로 설정하였습니다.

 

 

 

복호화 openssl_decrypt()

원시 또는 base64 인코딩 문자열을 가져와 복호화 하는 함수입니다.

<?php
// 복호화
function decrypt($ciphertext, $key='') {
    if (!$key) $key = "test-key";
    
    return openssl_decrypt(base64_decode($ciphertext), "AES-256-CBC", $key, true, str_repeat(chr(0), 16));
}

 

 

 

사용예시
<?php
$plaintext = "민트의 개발일지";

// 암호화
$enc = encrypt($plaintext);
echo $enc; // toPA9+syodaqqqpLKXflNwuJUuoEqCobB9GxTVfRgU0=

// 복호화
$dec = decrypt($enc);
echo $dec; // 민트의 개발일지