php 写一个原生的rsa 加密解密
时间: 2024-12-03 12:26:26 浏览: 29
在 PHP 中,原生的 RSA 加密和解密通常涉及到 `openssl` 函数库。以下是一个简单的示例,演示了如何使用原生的 RSA 进行加解密操作:
```php
// 导入RSA秘钥
function loadKey($keyFile, $type = OPENSSL_KEYTYPE_RSA) {
$content = file_get_contents($keyFile);
$key = openssl_pkey_get_private($content, '', null, $type); // 私钥
$publicKey = openssl_pkey_get_public($content);
return array(
'private' => $key,
'public' => $publicKey
);
}
// RSA 加密
function encryptRsa($message, $publicKey) {
return base64_encode(openssl_public_encrypt($message, OPENSSL_RAW_DATA, $publicKey));
}
// RSA 解密
function decryptRsa($encryptedMessage, $privateKey) {
return openssl_private_decrypt(base64_decode($encryptedMessage), $result, $privateKey);
}
// 使用示例
$keyData = loadKey('path/to/private.key'); // 替换为你的私钥文件路径
$message = 'Hello, world!'; // 待加密的消息
// 加密
$encrypted = encryptRsa($message, $keyData['public']);
// 解密
$decrypted = decryptRsa($encrypted, $keyData['private']);
echo "Original message: $message\n";
echo "Encrypted: $encrypted\n";
echo "Decrypted: $decrypted\n";
```
注意:
1. 此示例假设你已经有了正确的RSA密钥文件(私钥用于解密,公钥用于加密)。
2. 你需要处理错误,例如检查文件读取、加密解密操作是否成功等。
3. 使用 RSA 加密通常涉及较大的计算开销,所以对于大规模的数据,效率可能不高。
阅读全文