J'écris une implémentation Java d'une application écrite à l'origine en C. Je ne peux pas modifier la version C, et la version Java doit partager des données cryptées avec la version C.Quel est l'équivalent Java JCE pour cette fonction de chiffrement C OpenSSL?
est ici la partie pertinente du code de cryptage C:
makekeys(password,&key1,&key2); /* turns password into two 8 byte arrays */
fill_iv(iv); /* bytes 8 bytes of randomness into iv */
des_key_sched(&key1,ks1);
des_key_sched(&key2,ks2);
des_ede2_ofb64_encrypt(hashed,ctext,hashedlen,ks1,ks2,
&iv,&num);
Je vois que l'équivalent JCE est quelque chose comme:
SecretKey key = new SecretKeySpec(keyBytes, "DESede");
IvParameterSpec iv = new IvParameterSpec(new byte[8]);
Cipher cipher = Cipher.getInstance("DESede/?????/?????"); // transformation spec?
cipher.init(Cipher.ENCRYPT_MODE, key, iv);
byte[] cipherTextBytes = cipher.doFinal(plaintext);
Questions:
- Le code C prend deux clés, JCE en prend un. Comment puis-je concilier cela? Juste ajouter les deux dans un tableau? Dans quel ordre?
- Quelle transformation spec (le cas échéant!) Est équivalente à la des_ede2_ofb64_encrypt de OpenSSL? Comment pourrais-je savoir, sauf en demandant à des étrangers sur Internet? ;)
Merci beaucoup. Les documents Sun que je travaillais ne mentionnaient pas un mode "OFB64" - seulement "OFB". Mais l'exécution semble heureuse avec OFB64. Je posterai quand il parlera à la version C. – slim
Fonctionne parfaitement. Merci encore. – slim