封裝一個非對稱加密和解密實用類
<?php
class RsaServer
{
protected $key;
public function __construct(string $key_file, $is_pub = false)
{
if (!is_file($key_file)) {
throw new \Exception('key path is invalid');
}
$content = file_get_contents($key_file);
if ($is_pub) {
$this->key = openssl_pkey_get_public($content);
} else {
$this->key = openssl_pkey_get_private($content);
}
return $this;
}
public function privateEncrypt($data = '')
{
if (!is_string($data)) {
return null;
}
return openssl_private_encrypt($data, $encrypted, $this->key) ? base64_encode($encrypted) : null;
}
public function publicEncrypt($data = '')
{
if (!is_string($data)) {
return null;
}
return openssl_public_encrypt($data, $encrypted, $this->key) ? base64_encode($encrypted) : null;
}
public function privateDecrypt($encrypted = '')
{
if (!is_string($encrypted)) {
return null;
}
return (openssl_private_decrypt(base64_decode($encrypted), $decrypted, $this->key)) ? $decrypted : null;
}
public function publicDecrypt($encrypted = '')
{
if (!is_string($encrypted)) {
return null;
}
return (openssl_public_decrypt(base64_decode($encrypted), $decrypted, $this->key)) ? $decrypted : null;
}
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結