cafe24 호스팅 openssl

cafe24 호스팅 openssl

QA

cafe24 호스팅 openssl

답변 1

본문

안녕하세요!

질문이있습니다.

 

제가 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을 찾을 수 없다고 뜹니다.)

 

조언 부탁드립니다. ㅠㅠ

 

 

이 질문에 댓글 쓰기 :

답변 1

그거 서버단에서 모듈 직접 설치 하는거 아닌가요?

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
filter #curl ×
전체 97
© SIRSOFT
현재 페이지 제일 처음으로