cafe24 호스팅 openssl

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
cafe24 호스팅 openssl

QA

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

 

조언 부탁드립니다. ㅠㅠ

 

 

이 질문에 댓글 쓰기 :

답변을 작성하시기 전에 로그인 해주세요.
전체 0
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT