我正在寻找一些函数来使用指定的密钥加密和解密php中的字符串。
谢谢!
答案 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)
从这开始:http://www.ibm.com/developerworks/opensource/library/os-php-encrypt/
之后,看看Pascal MARTIN在How do I encrypt a string in PHP?
中的回答答案 2 :(得分:2)
你试过mcrypt吗?
答案 3 :(得分:0)
我认为你的意思是对称密钥加密。 mcrypt支持多种算法(如AES,Tripel DES)。虽然有一个问题,它不支持任何填充算法,因此您将无法获得原始长度。您有2个选项可以解决此问题,
在明文前添加一个长度字段。假设使用前4个字节作为长度。
自己做PKCS#5填充。此页面上有代码示例:http://www.php.net/manual/en/function.mcrypt-encrypt.php