gpt4 book ai didi

iOS SecItemCopyMatching RSA 公钥格式?

转载 作者:可可西里 更新时间:2023-11-01 05:56:57 28 4
gpt4 key购买 nike

我正在尝试从已生成的 key 对(两个 SecKeyRef)中提取一个 1024 位 RSA 公钥,以便通过网络发送它。我只需要一个普通的 (modulus, exponent) 对,它应该正好占用 131 个字节(128 个用于模数,3 个用于指数)。

但是,当我将 key 信息作为 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>

在重试 key 生成几次并比较生成的 NSData 对象后,所有 key 保持相同的字节是前 7 个字节:

<30818902 818100>

最后三个字节看起来像指数(65537,一个常见的值)。 “模数”和指数之间也有两个字节:

<0203>

有更多加密经验的人可以帮助我识别这是什么编码吗?德尔?如何正确解码模数和指数?

我尝试使用手动剥离模数和指数

NSData* modulus = [keyBits subdataWithRange:(NSRange){ 7, 128 }];
NSData* exponent = [keyBits subdataWithRange:(NSRange){ 7 + 128 + 2, 3 }];

但是在尝试解密远程主机使用该“ key ”编码的数据时出现错误。

编辑:

这是我最终用来解压 RSA blob 的解决方案的要点:https://gist.github.com/vl4dimir/6079882

最佳答案

假设您希望该解决方案在 iOS 下运行,请查看 this thread .该帖子确认编码为 DER,并展示了如何从您开始使用的 NSData 对象中提取指数和模数。

还有另一种解决方案不适用于 iOS,但适用于在 this thread 中安装了 OpenSSL 的桌面系统(包括 MacOS X) .即使您正在寻找仅限 iOS 的解决方案,您仍然可以使用它来验证您的代码是否正常工作。

关于iOS SecItemCopyMatching RSA 公钥格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12934743/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com