php - $rsa->encrypt() 我的公钥有问题
问题描述
我试图加密一些东西,phpseclib
但由于某种原因,该encrypt()
函数不返回任何东西。
这是我现在拥有的核心:
include('/pathto/Crypt/RSA.php');
$key = '-----BEGIN PUBLIC KEY-----
MIIB/TCCAWYCCQDJ7TMYJFzqYDANBgkqhkiG9w0BAQUFADBCMQswCQYDVQQGEwJjbjEVMBMGA1UE
BwwMRGVmYXVsdCBDaXR5MRwwGgYDVQQKDBNEZWZhdWx0IENvbXBhbnkgTHRkMCAXDTE3MDUwOTA1
MTkxMFoYDzIxMTcwNDE1MDUxOTEwWjBCMQswCQYDVQQGEwJjbjEVMBMGA1UEBwwMRGVmYXVsdCBD
aXR5MRwwGgYDVQQKDBNEZWZhdWx0IENvbXBhbnkgTHRkMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB
iQKBgQDb8V0OYUGP3Fs63E1gJzJh+7iqeymjFUKJUqSD60nhWReZ+Fg3tZvKKqgNcgl7EGXp1yNi
fJKUNC/SedFG1IJRh5hBeDMGq0m0RQYDpf9l0umqYURpJ5fmfvH/gjfHe3Eg/NTLm7QEa0a0Il2t
3Cyu5jcR4zyK6QEPn1hdIGXB5QIDAQABMA0GCSqGSIb3DQEBBQUAA4GBANhIMT0+IyJa9SU8AEya
WZZmT2KEYrjakuadOvlkn3vFdhpvNpnnXiL+cyWy2oU1Q9MAdCTiOPfXmAQt8zIvP2JC8j6yRTcx
JCvBwORDyv/uBtXFxBPEC6MDfzU2gKAaHeeJUWrzRv34qFSaYkYta8canK+PSInylQTjJK9VqmjQ
-----END PUBLIC KEY-----';
$rsa = new Crypt_RSA();
$rsa->loadKey($key);
$sometext = 'test this text';
echo $rsa->encrypt($sometext);
我下载了1.0版本。
怎么了?
我挖得更深一点,发现了这个问题,并将我的部分测试代码更改为:
if (!$rsa->encrypt($sometext)) {
echo "false";
} else {
echo $rsa->encrypt($sometext);
}
这证明我的密钥在某种程度上是错误的。但是格式应该是怎样的呢?
解决方案
您的 RSA 公钥实际上是 X509 证书。它包含一个公钥,但它本身并不是一个公钥。通过这样做,我能够使您的代码示例正常工作:
<?php
include('File/X509.php');
$key = '-----BEGIN PUBLIC KEY-----
MIIB/TCCAWYCCQDJ7TMYJFzqYDANBgkqhkiG9w0BAQUFADBCMQswCQYDVQQGEwJjbjEVMBMGA1UE
BwwMRGVmYXVsdCBDaXR5MRwwGgYDVQQKDBNEZWZhdWx0IENvbXBhbnkgTHRkMCAXDTE3MDUwOTA1
MTkxMFoYDzIxMTcwNDE1MDUxOTEwWjBCMQswCQYDVQQGEwJjbjEVMBMGA1UEBwwMRGVmYXVsdCBD
aXR5MRwwGgYDVQQKDBNEZWZhdWx0IENvbXBhbnkgTHRkMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB
iQKBgQDb8V0OYUGP3Fs63E1gJzJh+7iqeymjFUKJUqSD60nhWReZ+Fg3tZvKKqgNcgl7EGXp1yNi
fJKUNC/SedFG1IJRh5hBeDMGq0m0RQYDpf9l0umqYURpJ5fmfvH/gjfHe3Eg/NTLm7QEa0a0Il2t
3Cyu5jcR4zyK6QEPn1hdIGXB5QIDAQABMA0GCSqGSIb3DQEBBQUAA4GBANhIMT0+IyJa9SU8AEya
WZZmT2KEYrjakuadOvlkn3vFdhpvNpnnXiL+cyWy2oU1Q9MAdCTiOPfXmAQt8zIvP2JC8j6yRTcx
JCvBwORDyv/uBtXFxBPEC6MDfzU2gKAaHeeJUWrzRv34qFSaYkYta8canK+PSInylQTjJK9VqmjQ
-----END PUBLIC KEY-----';
$x509 = new File_X509();
$x509->loadX509($key);
$rsa = $x509->getPublicKey();
$sometext = 'test this text';
echo $rsa->encrypt($sometext);
推荐阅读
- python - 如何提取一个单词及其所有依赖项
- php - 使用 PHP 在 CURL 的标头中发布参数和数组
- angular - 无法使用 ngPackagr 使用资产/图像来创建角度模块
- ios - 使用 Xamarin UITEST 和 App Center 取消 iOS 权限对话框
- php - 无法检索 $_POST['files''] 的整数值
- reactjs - 无法读取未定义的属性“地图” - Google 地图 - React JS
- json - 颤振中的JSON解析
- windows - Windows 使用 bat 删除多个目录中的文件顺序然后 n 小时
- python - 是否可以在本地网络中远程访问 pypiserver
- hadoop - Hive 查询因错误“执行错误,从 org.apache.hadoop.hive.ql.exe 返回代码 2”而停止