【问题标题】:How do I convert a base64 exported public key into something I can use in php?如何将 base64 导出的公钥转换为我可以在 php 中使用的东西?
【发布时间】:2015-03-31 06:40:48
【问题描述】:

我能够导出在 iOS 中生成的公钥并将其转换为 base64:

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)

我还能够将其发送到我的 LAMP 服务器。现在我想弄清楚如何将它用作那里的公钥。

我试过了:

$keydata = base64decode($_GET['base64PublicKey']);
$res = gnupg_init();
$info = gnupg_import($res,$keydata);
print_r($info);

这是正确的方向吗?我知道数据的大小是 270,not the same as block size of the key。我对 PKI 有点陌生,任何帮助将不胜感激。

【问题讨论】:

标签: php swift pki


【解决方案1】:

如果您的 pub 密钥符合 X.509,您可以像这样使用 PHP 进行解析:

$keydata = base64decode($_GET['base64PublicKey']);
$info = openssl_x509_parse($keydata,true);
print_r($info);

PHP 包含一个用于 OpenSSl and X.509 的库

【讨论】:

  • 感谢您的帮助!事实证明,publicKeyData.base64EncodedStringWithOptions(nil) 正在返回非 base64 字符——特别是正斜杠和空格,因此 base64_decode() 返回 false。一旦我通过了,我就可以测试你的代码了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-21
  • 1970-01-01
  • 2020-10-03
  • 2019-12-20
  • 2018-09-14
  • 1970-01-01
  • 2016-12-20
相关资源
最近更新 更多