我正在尝试在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,但如果我必须使用像OpenSSL这样的第三方库,那么我也可以使用它。
答案 0 :(得分:2)
大多数人(需要引用)选择使用第三方OpenSSL库,不仅因为滚动自己的加密很难,而且因为如果你还没有经验,你很可能会创建糟糕的加密用它。
那就是说,如果你愿意的话,没有什么可以阻止你用直接的C或C ++编写你自己的SHA256哈希,虽然我认为你会发现你的PRNG选项缺乏并且发现自己花费太多时间在熵池和等。
如果你确实遇到了一个好的SHA256原语而没有OpenSSL的额外包袱,我也很想了解它!但到目前为止,我还没有见过一个。