2016-07-05 1 views
0

Lorsque j'essaie de crypter/décrypter un fichier pdf en utilisant bouncycastle, cela me donne un pdf vide (avec une taille de 184Ko). le code fonctionne parfaitement avec le fichier texte. Mais pas moyen avec le fichier PDF. quelqu'un a une idée de comment crypter/décrypter le fichier PDF en Java?Le cryptage/décryptage PDF ne fonctionne pas

ci-dessous le code que j'utilise pour le chiffrement, i une exception si je Crypter un fichier PDF (java.lang.ArrayIndexOutOfBoundsException: trop de données pour le bloc RSA) dans cette ligne cryptogramme = cipher.doFinal (entrée):

 Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider()); 

    byte[] input = acVote; 
    byte[] cipherText = null; 

    Cipher cipher = null; 

    try { 
    cipher = Cipher.getInstance("RSA/ECB/OAEPPadding", "BC"); 

    SecureRandom random = new SecureRandom(); 

    //do encryption 

    cipher.init(Cipher.ENCRYPT_MODE, pubKey, random); 

    cipherText = cipher.doFinal(input); 
    } catch (Exception ex) { 
     log.error("Exeption Message : " + ex); 
    } 

Quand je crypter un fichier txt, il fonctionne ...

+0

** (A) ** Vous n'affichez aucun code. Ainsi, nous ne savons pas ce que vous avez essayé. Alors, comment pourrions-nous dire quelle est l'erreur? ** (B) ** Vous parlez de cryptage PDF. Voulez-vous dire cryptage en utilisant l'un des algorithmes de cryptage mentionnés dans la spécification PDF, de sorte que vous pouvez décrypter dans un afficheur PDF standard? Ou voulez-vous dire cryptage agnostique PDF? – mkl

+0

PDFencryption comme un chiffrement de chaîne ... comme je l'ai dit ce travail pour le fichier .txt, mais pas pour le fichier .pdf ... –

+0

Les fichiers PDF ne sont pas des chaînes, pas de données de caractères, ce sont des fichiers binaires. Ainsi, l'utilisation de code destiné aux chaînes de caractères textuelles échouera probablement pour les fichiers PDF. – mkl

Répondre

0

Je peux juste vous dire la théorie et la voici:

Je crypté une image il y a quelque temps et je l'a fait en lisant l'image dans un énorme b 2048 yt tableau. Après cela je l'ai divisé tous les 2048 octets en un seul fichier octet (c'était une petite image) et après j'ai eu comme 20 fichiers avec des noms différents et c'était assez simple mais aussi un bon cryptage

2ème méthode est en utilisant le chiffrement César (de quelque chose comme ça) ce qui signifie que vous déplacez chaque octet 2 places vers le haut ou vers le bas (ou plus de 2)

ce sont mes assez chiffrements facile, mais parfois usefull : DDDDDDDDDDDDDDD

1

Voici ce que vous avez besoin décider: est-ce que je veux un fichier crypté ou est-ce que je veux un fichier PDF crypté? La distinction est importante. Si vous voulez un fichier crypté, c'est sur vous. Les raisons possibles pour lesquelles vous rencontrez des problèmes peuvent inclure que le fichier PDF est souvent partiellement binaire, et bien que cela ne devrait pas faire de différence dans le château gonflable, il peut indiquer le type de lecteur que vous utilisez pour les données, par exemple.

Si vous essayez d'obtenir un fichier PDF crypté (et je suppose que c'est ce que vous voulez vraiment), Bouncy Castle ne le fera pas (directement) pour vous. A la place, vous devez utiliser iText, un outil basé sur iText, ou une autre bibliothèque similaire (JoltPdf, par exemple) qui peut consommer des PDF et écrire correctement des PDF cryptés. PDF crypté est un fichier PDF partiellement crypté. Les éléments PDF de type chaîne et flux seront cryptés à l'aide d'un mot de passe fourni, d'un algorithme de cryptage spécifié et d'un peu de sel. En outre, en fonction de l'algorithme de chiffrement, le document peut être signé, ce qui est sa propre chose qui ne suit pas les processus de signature les plus courants. Sous le capot, iText et JoltPdf utilisent le château gonflable pour effectuer le hachage, le cryptage et la signature.