2016-05-03 23 views
0

Ich versuche, meine Nachricht in Android zu verschlüsseln und entschlüsseln in Knoten-js-Server.Knoten js gleichwertigen Code für Android AES-Verschlüsselung

Android Code:

SecretKeySpec secretkeyspec = new SecretKeySpec("password".getBytes(), "AES"); 
 
Cipher cipher = Cipher.getInstance("AES"); 
 
cipher.init(Cipher.ENCRYPT_MODE, secretkeyspec); 
 
byte[] encoded = cipher.doFinal(s.getBytes()); 
 
System.out.println(Arrays.toString(encoded));

Knoten JS-Code:

var crypto = require('crypto'); 
 
var CIPHER_ALGORITHM = 'aes-128-cbc'; 
 
var key = 'password'; 
 
var ivBuffer = new Buffer(16); 
 
ivBuffer.fill(0); 
 

 
var cipher = crypto.createCipheriv(CIPHER_ALGORITHM, new Buffer(key, 'utf-8'), ivBuffer); 
 
var encryptedBuffer = cipher.update(plainText, 'utf-8'); 
 
var fBuf = new Int8Array(Buffer.concat([encryptedBuffer, cipher.final()])); 
 
console.log(fBuf);

Wenn ich versuche, um die Puffer zu drucken im bekommen abweichen ent Werte zwischen Android und Knoten js.

Node Puffer:

[26, 116 , 2, -56, -70 , 121, -44, 66, 101, 84, -46, 127 , -70, -42 , 67, 31, 124, -104, -24 , 88, 74, 4, -22, -70 , -39, 48, -120, -21 , 37, -15, -24 , -30]

Android Puffer:

[26, 116, 2, -56, -70, 121, -44, 66, 101, 84, -46, 127, -70, -42, 67, 31, -92, 97, 16, -101 , -45, -68, 108, 89, -125, 17, -71, 53, 2, -13, 31, -79]

könnte jemand sagen, was der Androide Standard AES äquivalenten Knoten js Entschlüsselungscode.

Antwort

0

Stellen Sie sicher, dass der Betriebsmodus (z. B. CBC) und das Auffüllen (z. B. PKCS5) zwischen beiden Implementierungen übereinstimmen.

+0

kann nicht android-Code ändern. Aber wir können den Knoten-js-Code ändern. Wäre hilfreich, wenn Sie den äquivalenten Modus und das Padding angeben. Ich habe viel versucht, aber nicht herausgefunden. – andinrajesh

0

Ich habe endlich die Antwort gefunden.

var cipher = crypto.createCipheriv(CIPHER_ALGORITHM, new Buffer(key, 'utf-8'), ''); 
 
    var encryptedBuffer = cipher.update(plainText, 'utf-8'); 
 
    var finalEncryptedBuffer = new Int8Array(Buffer.concat([encryptedBuffer, cipher.final()])); 
 
    console.log(encodeBytes(finalEncryptedBuffer));