对于密码学和相关领域,我是一个完全的新手。我不想(也不需要)知道SHA256和RSA的细节。我“知道”它们的作用,但不知道它们是如何做到的,现在这已经足够。
我想知道“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());
其中filename的示例为:"/somewhere/mykey.p12"。