2017-09-27 6 views
1

Je veux décrypter le mot de passe qui a été chiffré par "DES/CBC/PKCS5Padding" de javax.crypto.Cipher. Je dois utiliser OpenSSL pour déchiffrer le mot de passe. Quelle API dans OpenSSL devrais-je utiliser?Qu'est-ce que l'API dans OpenSSL comme Java DES/CBC/PKCS5Padding?

Je sais API pour DES3 est DES_ede3_cbc_encrypt, et que vous voulez savoir DES.

Répondre

1

Vous devez également utiliser les fonctions EVP_*; et pas des fonctions comme DES_ede3_cbc_encrypt (et amis). Voir EVP Symmetric Encryption and Decryption sur le wiki OpenSSL.

Pour répondre à votre question à propos des symboles DES, vous devez utiliser EVP_des_XXX, où XXX est un mode d'intérêt. Je suppose que vous voulez EVP_des_cbc.

Si vous travaillez sur une machine CentOS avec la version FIPS de OpenSSL et le mode FIPS est actif, alors vous aurez probablement pas accès à tous les algorithmes de 3DES DES ou 2 touches (3-clé 3DES doit être disponible).

$ cd openssl 
$ grep EVP_des include/openssl/evp.h 
const EVP_CIPHER *EVP_des_ecb(void); 
const EVP_CIPHER *EVP_des_ede(void); 
const EVP_CIPHER *EVP_des_ede3(void); 
const EVP_CIPHER *EVP_des_ede_ecb(void); 
const EVP_CIPHER *EVP_des_ede3_ecb(void); 
const EVP_CIPHER *EVP_des_cfb64(void); 
const EVP_CIPHER *EVP_des_cfb1(void); 
const EVP_CIPHER *EVP_des_cfb8(void); 
const EVP_CIPHER *EVP_des_ede_cfb64(void); 
const EVP_CIPHER *EVP_des_ede3_cfb64(void); 
const EVP_CIPHER *EVP_des_ede3_cfb1(void); 
const EVP_CIPHER *EVP_des_ede3_cfb8(void); 
const EVP_CIPHER *EVP_des_ofb(void); 
const EVP_CIPHER *EVP_des_ede_ofb(void); 
const EVP_CIPHER *EVP_des_ede3_ofb(void); 
const EVP_CIPHER *EVP_des_cbc(void); 
const EVP_CIPHER *EVP_des_ede_cbc(void); 
const EVP_CIPHER *EVP_des_ede3_cbc(void); 
const EVP_CIPHER *EVP_desx_cbc(void); 
const EVP_CIPHER *EVP_des_ede3_wrap(void); 

Voici quelques références que je garde loin pour OpenSSL chipé et Java Interop. Habituellement EVP_BytesToKey provoque certains problèmes.

+0

J'utilise 'DES_ncbc_encrypt', et il fonctionne bien dans le décryptage mot de passe qui est chiffré par DES/CBC/PKCS5Padding de Java. – Edure