我正在尝试在 iPhone 上用 ObjC 重写一些 Java (Android) 代码。该代码将执行基本的 Web 服务调用,并且需要设置一些带有身份验证信息的 header 。
该信息的一部分是我发送的数据的加密哈希值。
Java 版本使用手机上生成的 RSA 私钥计算 SHA256 签名。私钥是使用我可用的种子生成的。
(简化的)java代码如下:
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
Signature sig = Signature.getInstance("SHA256WithRSAEncryption");
// I get the private key bytes from an outside source
EncodedKeySpec privateKeySpec = new PKCS8EncodedKeySpec(privateKeyBytes);
sig.initSign(keyFactory.generatePrivate(privateKeySpec));
sig.update(/* insert my data here */);
return sig.sign();
现在我正尝试在 iOS 和 ObjC 中重新创建它。进行 SHA256 签名计算很容易,但我不知道如何轻松创建私钥。如果有可用的内置 API,我更愿意使用,但如果我必须使用第三方库(如 OpenSSL),那么我也可以接受。
最佳答案
大多数人(需要引文)选择使用第三方 OpenSSL 库,不仅因为滚动自己的加密很难,而且因为如果您还没有经验,他们很有可能会创建错误的加密用它。
也就是说,没有什么能阻止您编写自己的 SHA256 哈希,如果您愿意,可以直接使用 C 或 C++,尽管我认为您会发现缺少 PRNG 选项,并且发现自己在熵池和喜欢。
如果您确实遇到了没有 OpenSSL 的所有额外包袱的良好 SHA256 原语,我也很乐意了解它!但到目前为止我还没有看到。
关于ios - 在 iOS 中创建 RSA 私钥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19932001/