2017-09-27 4 views
1

Ich möchte das Passwort entschlüsseln, das mit "DES/CBC/PKCS5Padding" von javax.crypto.Cipher verschlüsselt wurde. Ich muss OpenSSL verwenden, um das Passwort zu entschlüsseln. Welche API in OpenSSL sollte ich verwenden?Was ist API in OpenSSL wie Java DES/CBC/PKCS5Padding?

Ich weiß API für DES3 ist DES_ede3_cbc_encrypt, und wollen DES wissen.

Antwort

1

Sie sollten auch EVP_* Funktionen verwenden; und funktioniert nicht wie DES_ede3_cbc_encrypt (und Freunde). Siehe EVP Symmetric Encryption and Decryption im OpenSSL-Wiki.

Um Ihre Frage zu DES-Symbolen zu beantworten, müssen Sie EVP_des_XXX verwenden, wobei XXX ein Modus von Interesse ist. Ich vermute, Sie wollen EVP_des_cbc.

Wenn Sie auf einem CentOS Maschine mit der FIPS-Version von OpenSSL arbeiten und FIPS-Modus aktiv ist, dann haben Sie wahrscheinlich keinen Zugriff auf jeden DEM oder 2-Schlüssel 3DES-Algorithmen (3-Schlüssel 3DES soll verfügbar).

$ 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); 

Hier sind einige Referenzen, die ich fern zu halten für OpenSSL und Java-Interop abgeschaut. Normalerweise verursacht EVP_BytesToKey einige Probleme.

+0

Ich benutze 'DES_ncbc_encrypt', und es funktioniert gut Passwort zu entschlüsseln, die von DES/CBC/PKCS5Padding von Java verschlüsselt ist. – Edure