相关疑难解决方法(0)

如何在两种公钥格式之间进行转换,一种是"BEGIN RSA PUBLIC KEY",另一种是"BEGIN PUBLIC KEY"

如何在两种公钥格式之间进行转换,一种格式为:

-----BEGIN PUBLIC KEY-----
...
-----END PUBLIC KEY-----
Run Code Online (Sandbox Code Playgroud)

另一种格式是:

-----BEGIN RSA PUBLIC KEY-----
...
-----END RSA PUBLIC KEY-----
Run Code Online (Sandbox Code Playgroud)

例如,我使用ssh-keygen命令生成了id_rsa/id_rsa.pub对,我使用以下方法计算了id_rsa中的公钥:

openssl rsa -in id_rsa -pubout -out pub2 
Run Code Online (Sandbox Code Playgroud)

然后我再次使用以下方法从id_rsa.pub计算公钥:

ssh-keygen -f id_rsa.pub -e -m pem > pub1
Run Code Online (Sandbox Code Playgroud)

pub1的内容是:

-----BEGIN RSA PUBLIC KEY-----
MIIBCgKCAQEA61BjmfXGEvWmegnBGSuS+rU9soUg2FnODva32D1AqhwdziwHINFa
D1MVlcrYG6XRKfkcxnaXGfFDWHLEvNBSEVCgJjtHAGZIm5GL/KA86KDp/CwDFMSw
luowcXwDwoyinmeOY9eKyh6aY72xJh7noLBBq1N0bWi1e2i+83txOCg4yV2oVXhB
o8pYEJ8LT3el6Smxol3C1oFMVdwPgc0vTl25XucMcG/ALE/KNY6pqC2AQ6R2ERlV
gPiUWOPatVkt7+Bs3h5Ramxh7XjBOXeulmCpGSynXNcpZ/06+vofGi/2MlpQZNhH
Ao8eayMp6FcvNucIpUndo1X8dKMv3Y26ZQIDAQAB
-----END RSA PUBLIC KEY-----
Run Code Online (Sandbox Code Playgroud)

而pub2的内容是:

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA61BjmfXGEvWmegnBGSuS
+rU9soUg2FnODva32D1AqhwdziwHINFaD1MVlcrYG6XRKfkcxnaXGfFDWHLEvNBS
EVCgJjtHAGZIm5GL/KA86KDp/CwDFMSwluowcXwDwoyinmeOY9eKyh6aY72xJh7n
oLBBq1N0bWi1e2i+83txOCg4yV2oVXhBo8pYEJ8LT3el6Smxol3C1oFMVdwPgc0v
Tl25XucMcG/ALE/KNY6pqC2AQ6R2ERlVgPiUWOPatVkt7+Bs3h5Ramxh7XjBOXeu
lmCpGSynXNcpZ/06+vofGi/2MlpQZNhHAo8eayMp6FcvNucIpUndo1X8dKMv3Y26
ZQIDAQAB
-----END PUBLIC KEY-----
Run Code Online (Sandbox Code Playgroud)

根据我的理解,pub1和pub2包含相同的公钥信息,但它们的格式不同,我想知道如何在两种格式之间进行转换?任何人都可以向我展示两种格式的简明介绍吗?

openssl ssh-keys x509 public-key pkcs#1

83
推荐指数
5
解决办法
6万
查看次数

iOS中的客户端证书和身份

我使用SecKeyGeneratePair函数为基于Swift的iOS应用程序生成了私钥和公钥.
然后,我使用iOS CSR生成生成证书签名请求,我的服务器以PEM格式回复证书链.
我使用以下代码将PEM证书转换为DER格式:

var modifiedCert = certJson.replacingOccurrences(of: "-----BEGIN CERTIFICATE-----", with: "")
modifiedCert =  modifiedCert.replacingOccurrences(of: "-----END CERTIFICATE-----", with: "")
modifiedCert =  modifiedCert.replacingOccurrences(of: "\n", with: "")
let dataDecoded = NSData(base64Encoded: modifiedCert, options: [])
Run Code Online (Sandbox Code Playgroud)

现在,我应该使用DER-data创建证书 let certificate = SecCertificateCreateWithData(nil, certDer)

我的问题如下:如何将证书与我在开头创建的私钥连接,并获得这两个(密钥和证书)所属的身份?
也许,将证书添加到钥匙串并获取身份使用SecItemCopyMatching?我已经按照SecIdentityRef程序中提出的程序进行了操作

编辑:

将证书添加到钥匙串时,我得到状态响应0,我相信这意味着证书已添加到钥匙串中.

let certificate: SecCertificate? = SecCertificateCreateWithData(nil, certDer)
    if certificate != nil{
        let params : [String: Any] = [
            kSecClass as String : kSecClassCertificate,
            kSecValueRef as String : certificate!
        ]
        let …
Run Code Online (Sandbox Code Playgroud)

encryption certificate ios swift

22
推荐指数
1
解决办法
1925
查看次数

标签 统计

certificate ×1

encryption ×1

ios ×1

openssl ×1

pkcs#1 ×1

public-key ×1

ssh-keys ×1

swift ×1

x509 ×1