Wie entschlüssele ich verschlüsselten AES / CCM-Text mit Bouncy Castle?

8

Verschlüsselung

Die Verschlüsselung erfolgt mit Stanford Javascript Crypto Library (SJCL). Im Folgenden finden Sie ein vollständiges Verschlüsselungsbeispiel, das in zwei Teile unterteilt ist. Die erste ist die passwortbasierte Schlüsselableitung mit PBKDF2 . Im zweiten Teil erfolgt die eigentliche Verschlüsselung mit dem abgeleiteten Schlüssel und einem Initialisierungsvektor (IV). Beachten Sie, dass Salt und IV fest codiert sind, so dass es einfacher ist, eine C # -Dechiffrierungslösung bereitzustellen.

%Vor%

Der Wert der encryptionKey -Variable:

  • SJCL-Bit-Array: [ -74545279, -553931361, -1590906567, 1562838103 ]
  • Hex codiert: fb8e8781defbad9fa12cb1395d270457
  • Base64 codiert: +46Hgd77rZ+hLLE5XScEVw==

Der Wert der iv -Variable:

  • SJCL-Bit-Array: [ -2104361200, 2121894441 ]
  • Hexadezimal codiert: 8291ff107e798a29
  • Base64 codiert: gpH/EH55iik=

Der Wert der cipherText -Variable:

  • SJCL-Bit-Array: [ 1789401157, -1485204800, -440319203, 17593459146752 ]
  • Hexadezimal codiert: 6aa81845a77992c0e5c1431d4be2
  • Base64 codiert: aqgYRad5ksDlwUMdS+I=

Frage

Die Frage ist:

Wie kann ich den verschlüsselten Text mit Bouncy Castle entschlüsseln?

Arbeitendes Entschlüsselungsbeispiel nach Hilfe von jbtule unter

%Vor%

Ich bekomme ein System.ArgumentException . Ich denke, es beschweren sich darüber, dass eines der Byte-Arrays zu kurz ist.

Boncy Castle ist auf der NuGet-Website an folgendem Ort verfügbar: Ссылка .

Über

Die AES / CCM-Entschlüsselungslösung ist Teil des SjclHelpers -Projekts unter CodePlex und wird als NuGet-Paket veröffentlicht.

    
knut 01.05.2012, 10:59
quelle

2 Antworten

2

Von was ich sehen kann:

  1. Nonce sollte die IV sein.
  2. Im Allgemeinen verwenden Sie AeadParameters anstelle von CcmParameters , aber das ist vielleicht immer noch in Ordnung, aber wickeln Sie es nicht mit ParametersWithIV
  3. associateText ist optional, da CCM unverschlüsselte Daten authentifizieren kann, die sich auf Ihre verschlüsselten Daten beziehen, wenn Sie sie benötigen. Sie benötigen wahrscheinlich ein Argument, da es dasselbe wie sjcl adata sein muss, und die Transportmethode kann alles Mögliche sein.
  4. Es stimmt, dass tag und macSize gleich sind.
  5. DoFinal sollte ccmMode.DoFinal(plainBytes, res); sein
  6. Aus Sicherheitsgründen sollten Sie nach der Entschlüsselung die letzten ( macSize / 8 ) Bytes des cipherText mit ccmMode.GetMac() vergleichen, um die Authentifizierung zu überprüfen.
  7. var plainBytes = new byte[ccmMode.GetOutputSize(cipherText.Length)]
jbtule 01.05.2012, 15:30
quelle
0

Sie können sjcl JSON nicht mit Bouncy Castle entschlüsseln. Weil der vorberechnete Tisch von SJCL sich von dem von Bouncy Castle unterscheidet. Ich habe eine eigene Bibliothek gemacht. Wenn Sie noch nach einer Entschlüsselungslösung suchen, versuchen Sie es. Ссылка

    
mebius1080p 03.06.2013 07:35
quelle

Tags und Links