Я новичок в криптографии и подобных вещах. Я не знаю (и не хочу) знать подробности SHA256 и RSA. Я «знаю», что они делают, а не как они это делают, и пока этого достаточно.
Мне интересно, что на самом деле делает алгоритм "SHA256withRSA" (если его можно так назвать) и в каком порядке. Например, хеширует ли он данные с помощью SHA256, а затем шифрует их с помощью RSA, или наоборот, или что-то еще?
Причина, по которой я спрашиваю, заключается в том, что я хочу сделать Java-эквивалент:
Signature.getInstance("SHA256withRSA")
signature.initSign(privateKey); //privateKey == a key extracted from a .p12 file
в Objective-C на iOS. И я не мог найти ничего, что делало бы именно это, поэтому я спрашиваю, могу ли я просто хэшировать данные (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".