이전 목록 다음
채택완료

cafe24 호스팅 openssl

안녕하세요!

질문이있습니다.

 

제가 md5withRSA로 암호화 하여 데이터를 전송해야하는데,

RSA암호화는 처음이라 몇일째 구글 검색대로 해봐도 궁금한점이 있어서 문의드립니다.

 

Copy
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>";

개인키 공개키 생성까지하고,

 

Copy
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과 검증은 어떻게 얻어야하는건가요 ..?

Copy
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개 / 댓글 2개

채택된 답변
+20 포인트

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

선생님 답변 감사드려요!^^
서버에는 openssl 설치 되있는데 호스팅 사용중이라 방법을 찾고있습니다..ㅠㅠ
phpini 에 확인되면 그대로 쓰시면되요

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인
🐛 버그신고