PHP非對稱加密-RSA

對稱加密算法是在加密和解密時使用同一個密鑰。與對稱加密算法不同,非對稱加密算法需要兩個密鑰--公開密鑰(public key)和私有密鑰(private key)進行加密和解密。
公鑰和密鑰是一對,如果公開密鑰對數據進行加密,只有對應私有密鑰才能解密;如果用私有密鑰對數據加密,那麼只有對應公有密鑰才能解密。
常用算法:RSA、Elgamal、揹包算法、Rabin、ECC等。RSA是最有影響力的公鑰加密算法之一。

生成公密鑰:
   # 生成私鑰
    openssl genrsa -out rsa_private_key.pem 1024
    # 生成公鑰
    openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

在PHP中用RSA進行加密解密如下:
<?php

    $private_key_file = "rsa_private_key.pem";
    $public_key_file = "rsa_public_key.pem";
    $data = "hello world";
    if (file_exists($private_key_file)) {
        $private_key = file_get_contents($private_key_file);
    } else {
        die("private key not exists");
    }
    if (file_exists($public_key_file)) {
        $public_key = file_get_contents($public_key_file);
    } else {
        die("public key not exists");
    }

    $encrypted = $decrypted = "";
    openssl_private_encrypt($data, $encrypted, $private_key); // 使用私鑰加密數據
    openssl_public_decrypt($encrypted, $decrypted, $public_key);

    echo $decrypted;

    $encrypted = $decrypted = "";
    openssl_public_decrypt($data, $encrypted, $public_key);
    openssl_private_encrypt($data, $decrypted, $private_key); // 使用私鑰進行加密
    echo $decrypted;

 

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章