如何将base64导出的公钥转换为可以在php中使用的公钥?
我能够导出在iOS中生成的公钥并将其转换为base64:如何将base64导出的公钥转换为可以在php中使用的公钥?,php,swift,pki,Php,Swift,Pki,我能够导出在iOS中生成的公钥并将其转换为base64: var dataPtr:Unmanaged<AnyObject>? let query: [String:AnyObject] = [ kSecClass: kSecClassKey, kSecAttrApplicationTag: "com.example.site.public", kSecReturnData: kCFBooleanTrue ] let qResult = SecItemCopyM
var dataPtr:Unmanaged<AnyObject>?
let query: [String:AnyObject] = [
kSecClass: kSecClassKey,
kSecAttrApplicationTag: "com.example.site.public",
kSecReturnData: kCFBooleanTrue
]
let qResult = SecItemCopyMatching(query, &dataPtr)
// error handling with `qResult` ...
let publicKeyData = dataPtr!.takeRetainedValue() as NSData
// convert to Base64 string
let base64PublicKey = publicKeyData.base64EncodedStringWithOptions(nil)
这是正确的方向吗?我知道数据的大小是270。我对PKI有些陌生,希望您能提供帮助。如果您的pub密钥与X.509兼容,您可以使用PHP进行如下解析:
$keydata = base64decode($_GET['base64PublicKey']);
$info = openssl_x509_parse($keydata,true);
print_r($info);
PHP包含一个库,用于证书采用DER编码的X.509格式?我想是的,但我不能完全确定。这似乎表明:谢谢你的帮助!事实证明,
publicKeyData.base64EncodedStringWithOptions(nil)
返回的是非base64字符——特别是斜杠和空格,因此base64_decode()返回false。一旦我通过了,我就可以测试你的代码了。
$keydata = base64decode($_GET['base64PublicKey']);
$info = openssl_x509_parse($keydata,true);
print_r($info);