SHA256withRSA que fait-il et dans quel ordre?
Je suis un newbie quand il s'agit de la cryptographie et de telles choses. Je ne sais pas (et ne veux pas) connaître les détails de la SHA256 et RSA. Je "sais" ce qu'ils font, pas comment ils font, et pour l'instant c'est assez.
Je me demandais ce que le "SHA256withRSA"-algorithme (si on peut appeler ça comme ça) en fait faire et dans quel ordre. Par exemple, est-il de hachage de données avec SHA256 et de la crypte à l'aide de RSA ou est-il vice-versa, ou quelque chose d'autre?
La raison pour laquelle je suis demander c'est parce que je veux faire la java équivalent de:
Signature.getInstance("SHA256withRSA")
signature.initSign(privateKey); //privateKey == a key extracted from a .p12 file
en Objective-C pour iOS. Et je n'arrivais pas à trouver une substance qui fait exactement cela, donc je me demande, je peux juste de hachage de données (SHA256), puis de le chiffrer (RSA) (ou vice-versa) et d'obtenir le même comportement?
Quelle est la solution proposée pour faire ce genre de chose?
Merci!
EDIT:
J'ai omis de mentionner que j'ai signer les données à l'aide d'une clé privée qui est obtenu en faisant:
KeyStore keystore = KeyStore.getInstance("PKCS12");
keystore.load(new FileInputStream(new File(filename)), password.toCharArray());
PrivateKey privateKey = (PrivateKey)keystore.getKey(alias, password.toCharArray());
Où le nom de fichier est par exemple: "/quelque part/maclé.p12".
source d'informationauteur Whyser
Vous devez vous connecter pour publier un commentaire.
"SHA256withRSA"
met en œuvre le PKCS#1 v1.5 le rembourrage et l'exponentiation modulaire avec le nom formel RSASSA-PKCS1-v1_5 après le calcul de la valeur de hachage sur les données à l'aide de SHA256.Donc l'ordre général est:
Le rembourrage utilisé pour le chiffrement et la signature de génération est différente, donc en utilisant le chiffrement peut provoquer des erreurs de signatures.
Le PKCS#1 v1.5 le protocole de remplissage a été remplacé par le PSS. De nouveaux protocoles, il est conseillé d'utiliser le PSS régime de la place. Pour RSA très lisible norme existe. Cette norme a également été utilisé comme une base pour RFC 3447: Public-Key Cryptography Standards PKCS () #1: RSA Cryptography Spécifications de la Version 2.1 (qui est en fait une copie).
En ce qui concerne le rembourrage dans iOS, veuillez vérifier cette réponse par Thomas Pornin. Fondamentalement, vous devez créer le hachage SHA-256, préfixe statique bloc de données (défini dans le fichier PKCS#1 spécifications) puis utiliser
SecKeyRawSign
à l'aide dekSecPaddingPKCS1
.Pour votre commodité, le PKCS#1 défini par bloc de données qui doit être précédé par le code hexadécimal pour SHA-256 (il peut être un peu difficile à trouver dans les documents standard, c'est dans les notes de la section 9.2):
Notes: