cafe24 호스팅 openssl
본문
안녕하세요!
질문이있습니다.
제가 md5withRSA로 암호화 하여 데이터를 전송해야하는데,
RSA암호화는 처음이라 몇일째 구글 검색대로 해봐도 궁금한점이 있어서 문의드립니다.
function rsa_generate_keys($password, $bits = 2048, $digest_algorithm = 'md5')
{
$res = openssl_pkey_new(array(
'digest_alg' => $digest_algorithm,
'private_key_bits' => $bits,
'private_key_type' => OPENSSL_KEYTYPE_RSA,
));
openssl_pkey_export($res, $private_key, $password);
$public_key = openssl_pkey_get_details($res);
$public_key = $public_key['key'];
return array(
'private_key' => $private_key,
'public_key' => $public_key,
);
}
$f1 = rsa_generate_keys("123456");
$private_key = $f1["private_key"];
$public_key = $f1["public_key"];
echo $private_key;
echo "<br>";
echo "<br>";
echo $public_key;
echo "<br>";
echo "<br>";
개인키 공개키 생성까지하고,
function rsa_encrypt($plaintext, $public_key)
{
// 공개키를 사용하여 암호화한다.
$pubkey_decoded = @openssl_pkey_get_public($public_key);
if ($pubkey_decoded === false) return false;
$ciphertext = false;
$status = @openssl_public_encrypt($plaintext, $ciphertext, $pubkey_decoded);
if (!$status || $ciphertext === false) return false;
// 암호문을 base64로 인코딩하여 반환한다.
return base64_encode($ciphertext);
}
$rdata = "";
$f2 = rsa_encrypt($rdata, $public_key);
데이터를 암호화까지는 완료하였습니다.
하지만 sign과 검증은 어떻게 얻어야하는건가요 ..?
function create_sign($data) {
$base_path = base_path();
$password = env('RSA_KEY');
$app_evn = env('APP_ENV');
$data = json_encode($data, JSON_UNESCAPED_UNICODE);
if ($app_evn == 'REAL') {
// $private_key = file_get_contents($base_path . '/key/test_private.pem');
} else {
// $private_key = file_get_contents($base_path . '/key/test_private.pem');
}
$signature = false;
$private_key = openssl_pkey_get_private($private_key, $password);
openssl_sign($data, $signature, $private_key, "SHA256");
// openssl_sign($data, $signature, $private_key, OPENSSL_ALGO_MD5);
if($signature === false)
return false;
return base64_encode($signature);
}
위 함수에서 연결하는 pem은 개인키와 공개키를 pem파일로 만들었어야하는건가요..?
혹시 cafe24 호스팅에서 openssl이 깔려있으나, 해당 기능을 putty ssh로 사용할수있나요..?
(사용시도하였으나, openssl을 찾을 수 없다고 뜹니다.)
조언 부탁드립니다. ㅠㅠ
!-->!-->!-->
답변을 작성하시기 전에 로그인 해주세요.