使用密钥PHP加密和解密字符串

时间:2010-05-10 21:47:11

标签: php encryption

我正在寻找一些函数来使用指定的密钥加密和解密php中的字符串。

谢谢!

4 个答案:

答案 0 :(得分:4)

我以前用过的基本openssl实现:

class MyEncryption
{

    public $pubkey = '...public key here...';
    public $privkey = '...private key here...';

    public function encrypt($data)
    {
        if (openssl_public_encrypt($data, $encrypted, $this->pubkey))
            $data = base64_encode($encrypted);
        else
            throw new Exception('Unable to encrypt data. Perhaps it is bigger than the key size?');

        return $data;
    }

    public function decrypt($data)
    {
        if (openssl_private_decrypt(base64_decode($data), $decrypted, $this->privkey))
            $data = $decrypted;
        else
            $data = '';

        return $data;
    }
}

您需要生成RSA密钥对。 See here for information关于如何做到这一点。将私钥存储在文件本身是个坏主意。这只是一个例子。理想情况下,您希望用户在解密时提供私钥

答案 1 :(得分:3)

答案 2 :(得分:2)

你试过mcrypt吗?

答案 3 :(得分:0)

我认为你的意思是对称密钥加密。 mcrypt支持多种算法(如AES,Tripel DES)。虽然有一个问题,它不支持任何填充算法,因此您将无法获得原始长度。您有2个选项可以解决此问题,

  1. 在明文前添加一个长度字段。假设使用前4个字节作为长度。

  2. 自己做PKCS#5填充。此页面上有代码示例:http://www.php.net/manual/en/function.mcrypt-encrypt.php