1

我正在尝试在 iPhone 上的 ObjC 中重写一些 Java (Android) 代码。该代码将执行基本的 Web 服务调用,并且需要设置一些带有身份验证信息的标头。

该信息的一部分是我发送的数据的加密哈希。

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 签名计算很容易,但我看不到如何轻松创建私有 RSA 密钥。如果有可用的 API,我更愿意使用内置 API,但如果我必须使用 OpenSSL 等第三方库,那么我也可以接受。

4

1 回答 1

2

大多数人(需要引用)选择使用第三方 OpenSSL 库,不仅因为滚动您自己的加密货币很困难,而且因为如果您还没有使用它,他们很有可能会创建糟糕的加密货币。

也就是说,没有什么能阻止你用纯 C 或 C++ 编写自己的 SHA256 哈希,如果你愿意的话,尽管我认为你会发现你的 PRNG 选项缺乏,并且发现自己在熵池等上花费了太多时间。

如果您确实遇到了一个没有 OpenSSL 所有额外包袱的良好 SHA256 原语,我也很想了解它!但到目前为止,我还没有看到一个。

于 2013-11-12T15:05:37.633 回答