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.
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