RSA exemple qui n'utilisent pas NoPadding

Où puis-je trouver un RSA chiffrer exemple qui ne pas utiliser "NoPadding"?

--mise à jour

Mieux: comment faire de cette SSCCE fonctionnent correctement, sans jeter le "trop de données pour RSA bloc" exception?

import java.math.BigInteger;
import java.security.KeyFactory;
import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;
import java.security.spec.RSAPrivateKeySpec;
import java.security.spec.RSAPublicKeySpec;

import javax.crypto.Cipher;

/**
 * Basic RSA example.
 */
public class TestRSA {

    public static void main(String[] args) throws Exception {

 byte[] input = new byte[100];

 Cipher cipher = Cipher.getInstance("RSA/None/NoPadding", "BC");
 KeyFactory keyFactory = KeyFactory.getInstance("RSA", "BC");

 //create the keys

 RSAPublicKeySpec pubKeySpec = new RSAPublicKeySpec(new BigInteger("d46f473a2d746537de2056ae3092c451",
  16), new BigInteger("11", 16));
 RSAPrivateKeySpec privKeySpec = new RSAPrivateKeySpec(new BigInteger(
  "d46f473a2d746537de2056ae3092c451", 16), new BigInteger("57791d5430d593164082036ad8b29fb1",
  16));

 RSAPublicKey pubKey = (RSAPublicKey) keyFactory.generatePublic(pubKeySpec);
 RSAPrivateKey privKey = (RSAPrivateKey) keyFactory.generatePrivate(privKeySpec);

 //encryption step

 cipher.init(Cipher.ENCRYPT_MODE, pubKey);

 byte[] cipherText = cipher.doFinal(input);

 //decryption step

 cipher.init(Cipher.DECRYPT_MODE, privKey);

 byte[] plainText = cipher.doFinal(cipherText);

    }
}

--mise à jour: à propos de la boucle

À l'aide de:

 byte[] cipherText = new byte[input.length];
 for (int i = 0; i < input.length; i++) {
     byte[] singleByteArray = new byte[] { input[i] };
     cipherText[i] = cipher.doFinal(singleByteArray)[0];
 }

ne fonctionne pas bien. Pour une raison inconnue, le texte chiffré est devenu rempli de zéros - même si l'entrée est un tableau de 0x03.

  • Donc, un exemple qui utilise un protocole de remplissage?
  • question mise à jour
  • eh bien, avez-vous essayez de l'appeler juste getInstance("RSA") ? Avez-vous réellement besoin de la colombie-britannique pour cela?
  • oui je tryied, et même échouer à se produire. À propos de la colombie-britannique, je ne sais pas, je n'ai jamais travailler avec la cryptographie avant, j'ai obtenu cet exemple à partir d'un livre. Si vous avez le même lien pour moi, je voudrais être reconnaissants.
  • Votre dernière mise à jour tronque le texte chiffré. Essayer de déchiffrer le tableau complet à la place. Aussi, depuis votre clé actuelle ne permet que de chiffrer les messages d'une taille d'environ 6 ou moins d'octets, il serait utile si vous avez utilisé une clé avec un plus grand module.
  • en déchiffrant le tableau complet nous beck le début de cette question. Et à propos de la taille, je voudrais que le rsa pour crypter n'importe quelle taille, et pas seulement un maximum spécifié. Après de résoudre ce je vais enlange la taille pour l'utilisation finale.

InformationsquelleAutor Tom Brito | 2010-04-05