개발 꿀팁/PHP

PHP RSA 및 RSA2 암호화 코드

Jammie 2022. 11. 9. 15:27
반응형

PHP RSA 및 RSA2 암호화 코드

// An highlighted block
1024 rsa 공용 및 개인 키 쌍
2048 rsa2 공용 및 개인 키 쌍
pub_keyrsa 공용 키
pri_keyrsa 개인 키
붙이면 바로 사용 가능

function partPubEncrypt($decrypted='', $sign_type="rsa", $pub_key)
{
$piecewise=$sign_type=='rsa'?117:234;
$dataArray = str_split($decrypted,$piecewise);
$bContent = '';
foreach ($dataArray as $key => $subData) {
$bContent.= publicEncrypt($subData,$pub_key);
}
return base64_encode($bContent)
}
/**
* @param $decrypted
* @param $pub_key
* @return null
* 공개 키 암호화
* pub_key 공용 키
*/
function publicEncrypt($decrypted,$pub_key)
{
if (!is_string($decrypted) {
return null;
}
return (openssl_public_encrypt($decrypted, $encrypted, $pub_key))? $encrypted: null;
}
/**
* 단계별 비밀키 복호화
* @param string $encrypted
* @param string $sign_type
* @param string $pri_key
* @return String
*/
function partPrivDecrypt($encrypted='', $sign_type="rsa", $pri_key)
{
$piecewise=$sign_type=='rsa'?128:256;
$encrypted = base64_decode($encrypted);
$dataArray = str_split($encrypted, $piecewise);
$bContent = '';
foreach ($dataArray as $key => $subData) {
$bContent.= privDecryptNB64($subData,$pri_key);
}
return $bContent
}
/**
* 개인 키의 암호 해독하다
* @param $encrypted // 복호화 문자
* @param $pri_key 개인 키
* @return null
*/
function privDecryptNB64($encrypted,$pri_key)
{
if (!is_string($encrypted)) {
return null;
}
return (openssl_private_decrypt($encrypted, $decrypted, $pri_key))? $decrypted: null;
}
반응형