PHP 实现 RSA 加解密

本文介绍了一种使用RSA加密算法确保数据安全的方法。通过生成2048位强度的私钥与公钥对,私钥用于加密数据,公钥则用于解密。文章提供了具体的PHP代码示例,演示了如何使用openssl_private_encrypt和openssl_public_decrypt函数进行数据的加密和解密。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有时候为了数据安全,我们可以给数据进行RSA加密。私钥与公钥对可以通过工具生成。私钥为加密方保存用来加密数据,公钥给到解密方用来解密。示例中的秘钥对使用的2048强度。


    public function rsa()
    {
        // 公钥,解密用
        $publicKey = '-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsCcLc566TmAu8wgeZe3c
KSyJzK5rlOAKa8vBqu5csd3LK1M946mqw0q2J4TJOPdWoavDlSTA8UrNvPoRcWhy
9BC7Vu8+kmiwHXvk6swKHpml70nPIWyctQi9UtmR3Zsi+OyvD8r+HCYZqixrgsiE
BEOhn2Wx1Y+9D7OqK1pUNah5n7TBfKzswEzrKZNEpiHv9HMIngJpALEHRfz30gED
iS4ayQX9aq8f9jqTP3WU3ULwet572wKEcc1FuN5Dl10pRQUyaJESY6vyoQdEdt9n
gNUd38a4ircU9SEtKpcoEkc061rZoFTTDksjau7X64IXMU8eHMoYE+N9zhTyl86o
iwIDAQAB
-----END PUBLIC KEY-----';
		// 私钥,加密用
        $privateKey = '-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCwJwtznrpOYC7z
CB5l7dwpLInMrmuU4Apry8Gq7lyx3csrUz3jqarDSrYnhMk491ahq8OVJMDxSs28
+hFxaHL0ELtW7z6SaLAde+TqzAoemaXvSc8hbJy1CL1S2ZHdmyL47K8Pyv4cJhmq
LGuCyIQEQ6GfZbHVj70Ps6orWlQ1qHmftMF8rOzATOspk0SmIe/0cwieAmkAsQdF
/PfSAQOJLhrJBf1qrx/2OpM/dZTdQvB63nvbAoRxzUW43kOXXSlFBTJokRJjq/Kh
B0R232eA1R3fxriKtxT1IS0qlygSRzTrWtmgVNMOSyNq7tfrghcxTx4cyhgT433O
FPKXzqiLAgMBAAECggEBAJzZN14tILE2/bcTLJYQFPBoow6o5Ew8rarMVFcSRWFv
H0Alr77uzYl1FfrcRpw9yFrOaal8f3ya4dT6SdvUaD8gQt+mye1t4BtwvSXApuYW
Y+VMsG2Pm32rGYETD8nmIF7LyRlj455G4qVfRh++0aZGXjxjPdTuVycLEGPn24Gm
VurUNiWMi9Q0iwp5aL00Zgii/0FNaMU2/j7S1czzfVxjKBumykCUq/06glY4AOzt
Al9Fen5wfJ2zQIvBgTJ696oYdvWiEpC4z7dC9X8VhczBxFHZIxOglzbMH3X1zTsL
sVwQjccfvqxqmS07lkkcW+28vhGzPZOoQogPEfrLjtkCgYEA1sN86gLm40x33/as
QLdBbvPV2ldePXEoKJiV+G7PmWve9cVodiZ9T1a67B+erJXsDCCT4VyKXiJN4TE3
yq2kJZkD5tKbAwoINxZOJ9qi+Tj4l7cY/u5/9V47SBZLTv6tji0p0tBxveW88aNL
+HtkXPBP3qC/RKcrsGYIoFiJS5cCgYEA0fmpqBkGerzQ7X6ptPhILxE8aOE5tkBJ
G6XbP7Nza0guM2vzT6JKWl1b4jRbEDaboBPWeTBPyP/cry/T7zT5wHay4gAco0q6
Ccu8D5OVvZvKN44sQyew2lt/UpcUIglVyJf5DMebSW65MDJm+uEtjjMmIDwCVf+B
emC15NreeS0CgYEAtkCvgOd1iO8by7RJ+aGKpd3HXcNG9l1Q9yKGIo3nHwur6mXc
gGepb+rqNfefcFbKOoBq/pTJ15jE/pYGArnY0w9HgFq5sZqR3i3PpYKlS1pNnHKF
g9JiRJfzNvm0bxUxs7YgCAdcfwq3jVhG4FfWlAhbv1Iq/tfe+5ObPnfkC4ECgYB5
+FGh0K+f2lButLX15odft95kefghMuSEx+o87YutFOepfRp/9qDELxjxpEIFgAMU
kJF0Iikmc+IIbXrpp9cwAoNUnoYEIKNCj3M1hSBlXLqxXMe/Vq33mVCzdAkA4HVR
KV5FGynMFSJDqfOB5g2lXXbXIKSmud3HbagbQTwcHQKBgAfylKd5jJgekBXTHIQ5
/AMIrmbcJ0X5bVwq50lsYmik/GAxtqs3f16JFF+ioezjQEgdEh0f7ZVfbQrYzK3D
QKUxnjiHkey/BYqcgau6OwHAu5J15XlWINqTEBRWQ6NmLl1owwkYDeFbjO+2rp8b
e7854KfNTYTNH7eDmr7Aqnvo
-----END PRIVATE KEY-----';
		// 待加密的字符串数据
        $data = '我们测试一下RSA';
		// 为避免乱码,我先进行base64 ecode 
        $data = base64_encode($data);
		// 加密方用私钥加密
        openssl_private_encrypt($data, $encrypted, $privateKey);
        // 解密方用公钥解密
        openssl_public_decrypt($encrypted, $decrypted, $publicKey);
		// 进行base64 decode 得到原字符串
        $originData =  base64_decode($decrypted);
		// 打印出的内容为:"我们测试一下RSA"
        print_r( $originData );

    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值