2017-09-27 1 views
1

javax.crypto.Cipher의 "DES/CBC/PKCS5Padding"에 의해 암호화 된 암호를 해독하고 싶습니다. 비밀번호를 해독하려면 OpenSSL을 사용해야합니다. OpenSSL의 어떤 API를 사용해야합니까?Java DES/CBC/PKCS5Padding과 같은 OpenSSL의 API는 무엇입니까?

DES3 용 API는 DES_ede3_cbc_encrypt이고 알고 싶습니다. DES를 알고 싶습니다.

답변

1

EVP_* 함수도 사용해야합니다. DES_ede3_cbc_encrypt (및 친구들)과 같은 기능은 아닙니다. OpenSSL wiki의 EVP Symmetric Encryption and Decryption을 참조하십시오.

DES 기호에 대한 질문에 대답하려면 EVP_des_XXX을 사용해야합니다. 여기서 XXX은 관심있는 모드입니다. 나는 당신이 EVP_des_cbc을 원하는 것 같아요.

OpenSSL 의 FIPS 버전으로 CentOS 컴퓨터에서 작업하는 경우 FIPS 모드가 활성화되어 있으면 DES 또는 2 키 3DES 알고리즘에 액세스 할 수 없습니다 (3 키 3DES가 ​​있어야 함). 유효한).

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

는 여기 멀리에는 OpenSSL 및 Java 상호 운용성에 대한 cribbed 계속 몇 가지에 대한 참조입니다. 대개 EVP_BytesToKey은 몇 가지 문제를 일으 킵니다.

+0

나는'DES_ncbc_encrypt'를 사용하고 자바의 DES/CBC/PKCS5Padding에 의해 암호화 된 암호를 해독에 잘 작동합니다. – Edure

관련 문제