Chiffrer avec le module Crypto Node.js et décrypter avec Java (dans l'application Android)

Recherche d'un moyen de crypter les données (principalement des chaînes de caractères) dans le nœud et décrypter dans une application android (java).

L'ont fait avec succès dans chacun (crypter/décrypter un nœud, et de chiffrer/déchiffrer en java) mais ne semble pas possible de faire fonctionner entre eux.

Éventuellement, je ne suis pas le cryptage/décryptage de la même façon, mais chaque bibliothèque dans chaque langue a des noms différents pour les mêmes choses...

Toute aide appréciée.

voici un code:
Node.js

var crypto = require('crypto')
var cipher = crypto.createCipher('aes-128-cbc','somepass')
var text = "uncle had a little farm"
var crypted = cipher.update(text,'utf8','hex')
crypted += cipher.final('hex')
//now crypted contains the hex representation of the ciphertext

et java

private static String decrypt(byte[] raw, byte[] encrypted) throws Exception {
    SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
    Cipher cipher = Cipher.getInstance("AES");
    cipher.init(Cipher.DECRYPT_MODE, skeySpec );
    byte[] decrypted = cipher.doFinal(encrypted);
    return new String(decrypted);
}

la clé brute est créé comme ceci

private static byte[] getRawKey(String seed) throws Exception {
    KeyGenerator kgen = KeyGenerator.getInstance("AES");
    SecureRandom sr = SecureRandom.getInstance("SHA1PRNG");
    byte[] seedBytes = seed.getBytes()
    sr.setSeed(seedBytes);
    kgen.init(128, sr); //192 and 256 bits may not be available
    SecretKey skey = kgen.generateKey();
    byte[] raw = skey.getEncoded();
    return raw;
}

tandis que le chiffré hex chaîne est convertie en octets comme ce

public static byte[] toByte(String hexString) {
    int len = hexString.length()/2;
    byte[] result = new byte[len];
    for (int i = 0; i < len; i++)
        result[i] = Integer.valueOf(hexString.substring(2*i, 2*i+2), 16).byteValue();
    return result;
}

source d'informationauteur Shh | 2011-10-16