Chiffrer et déchiffrer une grande chaîne dans Java en utilisant RSA
Je suis en train de mettre en œuvre des ICP. Je veux crypter grande chaîne à l'aide de RSA en java sans utiliser de château gonflable. Problème que je reçois sont des Données ne doit pas être de plus de 117 octets. J'ai essayé seaching la solution où j'ai échoué. Je suis novice dans ce chiffrement. Merci de m'aider en donnant une grande chaîne comme un exemple et l'expliquer.
source d'informationauteur Mahesh Vemuri | 2012-11-21
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas utiliser un cryptage RSA décryptage sur plus d'env 128 octets à la fois. Vous devez séparer les données et le faire dans une boucle assez bien écrit les octets de String/Array comme vous allez. Si votre seul problème est la taille des données, vous n'avez probablement pas beaucoup plus pour aller. Juste le fractionnement des données.
Un excellent exemple, peut-être plus complète pour vous, traitez avec des chaînes de plus de 128 octets: http://coding.westreicher.org/?p=23
Si vous avez besoin de plus d'explication sur le cryptage RSA, en général:
Le code suivant montre comment utiliser KeyPairGenerator pour générer une clé RSA de la paire en Java:
Cela vous donnera une paire de Clés objet, qui est titulaire de deux clés: l'une privée et une publique. Afin de rendre l'utilisation de ces touches, vous aurez besoin de créer un algorithme de Chiffrement de l'objet, qui sera utilisé en combinaison avec SealedObject pour crypter les données que vous allez finir sur le réseau. Voici comment faire:
Après l'initialisation de l'algorithme de Chiffrement, nous sommes prêts pour chiffrer les données. Car après le cryptage des données qui en résultent ne fera pas beaucoup de sens si vous les voyez “nu”, nous avons à encapsuler dans un autre Objet. Java fournit, par le SealedObject classe. SealedObjects sont des conteneurs pour objets chiffrés, de chiffrer et de déchiffrer leur contenu avec l'aide d'un algorithme de Chiffrement de l'objet.
L'exemple suivant montre comment créer et de chiffrer le contenu d'un SealedObject:
L'objet peut être envoyé sur le réseau, sans peur, car il est crypté. Le seul qui peut décrypter et d'obtenir les données, est celui qui possède la clé privée. Normalement, cela devrait être le serveur. Afin de décrypter le message, nous allons avoir besoin de ré-initialiser l'algorithme de Chiffrement de l'objet, mais cette fois avec un mode différent, de les décrypter, et l'utilisation de la clé privée au lieu de la clé publique.
C'est la façon dont vous le faites en Java:
Maintenant que l'algorithme de Chiffrement est prêt à déchiffrer, nous devons dire à la SealedObject pour déchiffrer les données.
Attention lors de l'utilisation de la méthode getObject, puisqu'elle retourne une instance d'un Objet (même si c'est une instance de String), et non une instance de la Classe qu'il était avant de chiffrement, de sorte que vous aurez à le jeter à son avant forme.
Le ci-dessus est de: http://andreas.louca.org/2008/03/20/java-rsa-encryption-an-example/
RSA n'est pas prévu pour le vrac de chiffrement des données. Au lieu de cela, utiliser un chiffrement symétrique, comme AES pour chiffrer vos "grande chaîne". Ensuite, chiffrer la clé symétrique utilisée pour l'AES avec la clé RSA.
BouncyCastle prend en charge deux protocoles pour le faire: S/MIME et PGP. Tous les la vie privée sensible des protocoles d'utilisation de ces algorithmes asymétriques pour le transport de clé ou de l'échange de clés de cette manière.
La taille de message qui peut être chiffré avec RSA repose sur le module de la clé, moins de quelques octets requis pour toute sécurité rembourrage le message.