我在设备上使用SecKeyGeneratePair()设备生成了RSA对称密钥对.我SecKeyRef为每个键都有结构指针.那么,如何保存SecKeyRef到磁盘?甚至传输它(我也想象有正确编码的问题)?Apple的"证书,密钥和信任服务"指南说明
您可以将您的公钥发送给任何人,然后可以使用它来加密数据.
我想特别保存私钥; 所以我可以在部署的设备上使用它来解密用公钥加密的数据.
PS我不介意每个密钥的结果数据是DER编码的ASN.1还是base-64; 我只需要弄清楚如何从中取出钥匙SecKeyRef.我也非常清楚OS X的不存在SecKeychainItemExport().
有没有办法找出使用SecKeyGeneratePair(一般的安全框架)创建的公钥的模数和指数?
我正在尝试从已经生成的密钥对(两个SecKeyRefs)中提取 1024 位 RSA 公钥,以便通过网络发送它。我只需要一个简单的(modulus, exponent)对,它应该正好占用 131 个字节(模数为 128,指数为 3)。
但是,当我将密钥信息作为NSData对象获取时,我得到的是 140 位而不是 131。这是一个示例结果:
<30818902 818100d7 514f320d eacf48e1 eb64d8f9 4d212f77 10dd3b48 ba38c5a6
ed6ba693 35bb97f5 a53163eb b403727b 91c34fc8 cba51239 3ab04f97 dab37736
0377cdc3 417f68eb 9e351239 47c1f98f f4274e05 0d5ce1e9 e2071d1b 69a7cac4
4e258765 6c249077 dba22ae6 fc55f0cf 834f260a 14ac2e9f 070d17aa 1edd8db1
0cd7fd4c c2f0d302 03010001>
Run Code Online (Sandbox Code Playgroud)
在重试密钥生成几次并比较结果NSData对象后,所有密钥保持相同的字节是前 7 个:
<30818902 818100>
Run Code Online (Sandbox Code Playgroud)
最后三个字节看起来像指数(65537,一个普通值)。“模数”和指数之间还有两个字节:
<0203>
Run Code Online (Sandbox Code Playgroud)
有更多加密经验的人可以帮助我确定这是什么编码吗?德?如何正确解码模数和指数?
我尝试使用手动去除模数和指数
NSData* modulus = [keyBits subdataWithRange:(NSRange){ 7, 128 }];
NSData* exponent = [keyBits subdataWithRange:(NSRange){ 7 …Run Code Online (Sandbox Code Playgroud) cryptography ×2
ios ×2
iphone ×2
rsa ×2
security ×2
cocoa-touch ×1
encryption ×1
objective-c ×1