2016-07-12 12 views
4

Ich arbeite an PDF-Sicherheit und versuchen, Benutzer und Besitzer Passwort mit AES 256-bit encryption Algo zu verschlüsseln.AES 256-Bit-Verschlüsselung in PDF-Datei

Ich habe diese Schlüssel erfolgreich generiert (mit crypto Bibliothek), aber wenn diese Schlüssel in PDF Verschlüsselung Wörterbuch geschrieben werden, scheinen sie nicht zu arbeiten. (Acrobat öffnet die Datei nicht)

Ich habe iTextSharp untersucht, die die Verschlüsselung der pdf Datei durchführt. Jetzt möchte ich diese Datei entschlüsseln, so dass mir irgendwie die Idee kommt wie es iTextSharp gemacht hat. Aber leider habe ich kein Werkzeug dafür gefunden. Die mit iTextSharp verschlüsselte Datei wird korrekt in Adobe Acrobat geöffnet.

+2

Ich bin mir ziemlich sicher, dass das Passwort nicht "verschlüsselt" ist, sondern stattdessen "gestreckt" ist, ein kleines, aber wichtiges Detail. Außerdem ist das Schreiben der Schlüssel für das Wörterbuch nur ein kleiner Teil des Prozesses, Sie müssen die Dinge auch tatsächlich verschlüsseln. Wenn Sie an diesem Prozess interessiert sind, können Sie [die iText-Quelle herunterladen] (https://github.com/itext/itext7-dotnet/). Ich beginne mit 'itext/kernel/pdf/PdfReader.cs' und' itext/kernel/pdf/PdfEncryption.cs' –

+2

Es gibt zu viele bewegliche Teile für Sie zu sagen "Verschlüsselung funktioniert nicht, was ist los". Wir müssen mehr über die Details erfahren. Wir müssen auch sehen, was Sie mit Ihrer Implementierung gemacht haben. Ich erinnere mich, dass die PDF-Verschlüsselung MD5 verwendet, um das Kennwort zu verdauen, und RC4, um das Dokument zu verschlüsseln. Siehe auch eine der PDF-Referenzen unter [Adobe PDF Referenzarchive] (http://www.adobe.com/devnet/pdf/pdf_reference_archive.html). Beispiel: [Adobe Portable Document Format Version 1.4] (http://wwwimages2.adobe.com/content/dam/Adobe/en/devnet/pdf/pdfs/pdf_reference_archives/PDFReference.pdf), Seite 78. – jww

Antwort

0

Beim Verschlüsseln von Schlüsseln müssen Sie SASLprep (IETF RFC 4013) Profil von stringprep (IETF RFC 3454) verwenden. Die Sache, die ich hinzufügen möchte, ist lib ICU kann SASLprep (IETF RFC 4013) Profil leicht generieren.