簡體   English   中英

使用RSA私鑰對NSData簽名

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM