AES-Verschlüsselung mit Java-und Entschlüsselung mit Javascript

Mache ich eine Applikation muss die Java-basierte AES-Verschlüsselung-und JavaScript-basierte Entschlüsselung.
Ich bin mit dem folgenden code für die Verschlüsselung als eine grundlegende form.

public class AESencrp {

  private static final String ALGO = "AES";
  private static final byte[] keyValue = 
      new byte[] { 'A', 'b', 'c', 'd', 'e', 'f', 'g',
      'h', 'i', 'j', 'k','l', 'm', 'n', 'o', 'p'};

  public static String encrypt(String Data) throws Exception {
    Key key = generateKey();
    Cipher c = Cipher.getInstance(ALGO);
    c.init(Cipher.ENCRYPT_MODE, key);
    byte[] encVal = c.doFinal(Data.getBytes());
    String encryptedValue = new BASE64Encoder().encode(encVal);
    return encryptedValue;
  }


  private static Key generateKey() throws Exception {
    Key key = new SecretKeySpec(keyValue, ALGO);
    return key;
  }
}

Das JavaScript, das ich bin versucht, zu entschlüsseln, ist

<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/aes.js">   </script>

var decrypted = CryptoJS.AES.decrypt(encrypted,"Abcdefghijklmnop").toString(CryptoJS.enc.Utf8);

Aber die JavaScript-Entschlüsselung nicht funktioniert. Ich bin neu hier, könnte mir jemand sagen Weise zu lösen, ohne änderung der Java-code-block ?

Ich habe versucht, Base-64-Decodierung mein text wie diesen:

var words  = CryptoJS.enc.Base64.parse(encrKey);
var base64 = CryptoJS.enc.Base64.stringify(words);
var decrypted = CryptoJS.AES.decrypt(base64, "Abcdefghijklmnop");
alert("dec :" +decrypted);

aber immer noch nicht gut.

Ich habe versucht die Lösung, die unten vorgeschlagen sind, um mögliche padding-Problem, aber seine nicht zu geben ist keine Lösung.

var key = CryptoJS.enc.Base64.parse("QWJjZGVmZ2hpamtsbW5vcA==");
var decrypt = CryptoJS.AES.decrypt( encrKey, key, { mode: CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7 } );

alert("dec :" +decrypt);
  • "Aber die JavaScript-Entschlüsselung funktioniert nicht" > Kannst du bitte etwas näher erläutern?
  • Ich meine, die Seite Stoppt die Ausführung an der Entschlüsselung Linie, ich denke, es gibt einige Fehler in der Art und Weise bin ich versucht, es zu entschlüsseln.
  • Ist es ein Fehler gedruckt in der JavaScript-Konsole? Meine erste Vermutung wäre, dass Sie noch nicht base64-dekodiert dem Chiffretext, bevor Sie versucht, es zu entschlüsseln mit CryptoJS. Siehe code.google.com/p/crypto-js/#Encoders.
  • Ihr Versuch, base64 sieht defekt aus. Sollte es sein: var words = CryptoJS.enc.Base64.parse(encrKey); var decrypted = CryptoJS.AES.decrypt(words, "Abcdefghijklmnop");?
  • Ich habe versucht zu tun, wie du gesagt hast, aber immer noch nicht funktioniert. Ich Frage mich, ob das problem ist, dass ich mit secretkeyspec auf Schlüssel generieren im java-block und cryptojs in der js zu entschlüsseln, macht es keinen Unterschied ?
  • Ich vermute, es wird einen Unterschied, wie die Schlüssel behandelt werden. Ich denke, CryptoJS ableiten einer 256-bit-AES-Schlüssel aus Ihrem Passwort, in der Erwägung, dass in Java Sie sind nur mit dem raw-bytes.
  • Können Sie schlagen alle Weg, diese zu lösen.
  • Können Sie bitte geben Sie den code für decrption in java, die ich verwendet habe, die den gleichen code für javascript.

InformationsquelleAutor rkj | 2014-03-24
Schreibe einen Kommentar