當談到密碼學和這些事情時,我是一個全新手。我沒有(也不想)知道SHA256和RSA的細節。我「知道」他們做了什麼,而不知道他們做了什麼,現在就足夠了。SHA256withRSA它做了什麼以及按什麼順序?
我在想什麼「SHA256withRSA」算法(如果你可以稱之爲的話)實際上以什麼順序進行。例如,它是否使用SHA256對數據進行散列,然後使用RSA對其進行加密,或者反之亦然,還是其他?
的原因,我問的是,因爲我想要做的相當於Java的:
Signature.getInstance("SHA256withRSA")
signature.initSign(privateKey); //privateKey == a key extracted from a .p12 file
在iOS上的Objective-C。我似乎無法找到任何能夠完全實現這個功能的東西,因此我問,我可以將數據散列(SHA256),然後對其進行加密(RSA)(反之亦然),並獲得相同的行爲?
做這種事情的建議解決方案是什麼?
謝謝!
編輯: 我沒有提到要我簽字使用由做得到私鑰數據:
KeyStore keystore = KeyStore.getInstance("PKCS12");
keystore.load(new FileInputStream(new File(filename)), password.toCharArray());
PrivateKey privateKey = (PrivateKey)keystore.getKey(alias, password.toCharArray());
其中,文件名是舉例說:「/somewhere/mykey.p12」。
感謝您的詳細解答!我沒有提到包含所使用的私鑰的文件是.p12文件,並且根據我的理解,使用PKCS12時,會有什麼不同? (我將編輯我的問題以包含此信息) – Whyser
容器格式不應該對簽名有所影響,所以這是一個額外的問題。請檢查http://stackoverflow.com/questions/10025807/how-to-make-a-valid-p12-file-to-be-correctly-imported-by-secpkcs12import是否包含您需要的信息。 –
謝謝!你已經回答了我所問的問題,並會接受你的回答。您提供的鏈接對我有所幫助,但我仍然無法使用obj-c中的密鑰簽名數據。任何指針?或者我應該開始一個新的問題?再次感謝你! – Whyser