[英]Sign NSData with RSA private key
我所面臨的問題從我的角度來講在Apple文檔中缺少很多描述。
我需要使用由后台提供的RSA私鑰對NSData進行簽名。 私鑰以字符串形式接收。
如何實現呢? 我不想創建自己的密鑰對,我只想使用單個PRIVATE密鑰對NSData進行簽名。
我發現了使用OPENSSL的幾種解決方案,但是它們都不起作用,而且我找不到與本機CommonCrypto庫有關的任何合適的解決方案。
實際上,這是我需要復制的一段Android代碼:
public static PrivateKey getPrivateKey() throws Exception {
String key = ContentHolder.getInstance(context).getClientPrivateKey();
PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec(android.util.Base64.decode(key, android.util.Base64.NO_WRAP));
KeyFactory kf = KeyFactory.getInstance("RSA");
return kf.generatePrivate(spec);
-這個返回私鑰,私鑰是從存儲在應用數據庫中的字符串生成的
public String sign(byte[] array) throws SignatureException {
try {
Signature sign = Signature.getInstance("SHA1withRSA");
sign.initSign(privateKey);
sign.update(array);
return android.util.Base64.encodeToString(sign.sign(), android.util.Base64.NO_WRAP);
} catch (Exception ex) {
throw new SignatureException(ex);
}
}
-這將以base64字符串的形式返回帶符號的字節數組
如何在iOS中實現? 我花了很多時間搜索網絡並嘗試了幾種方法,但沒有一種成功。
對於任何代碼片段,我將深表感謝,因為“ CommonCrypto應該執行此操作”之類的提示對我不起作用。
非常感謝你
主要問題是Apple官方不支持使用字符串鍵( https://devforums.apple.com/message/641836#641836 )進行簽名。 他們堅持使用.p12並使用SecPKCS12Import導入。
檢查此答案 : https : //stackoverflow.com/a/27945240/4324866
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.