javax.crypto.Cipherの "DES/CBC/PKCS5Padding"によって暗号化されたパスワードを復号化したいと思います。私はOpenSSLを使ってパスワードを解読する必要があります。 OpenSSLのどのAPIを使うべきですか?Java DES/CBC/PKCS5PaddingのようなOpenSSLのAPIとは何ですか?
私はDES3のAPIがDES_ede3_cbc_encrypt
であり、DESを知りたいと思っています。
javax.crypto.Cipherの "DES/CBC/PKCS5Padding"によって暗号化されたパスワードを復号化したいと思います。私はOpenSSLを使ってパスワードを解読する必要があります。 OpenSSLのどのAPIを使うべきですか?Java DES/CBC/PKCS5PaddingのようなOpenSSLのAPIとは何ですか?
私はDES3のAPIがDES_ede3_cbc_encrypt
であり、DESを知りたいと思っています。
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);
Iは、OpenSSLとJavaの相互運用のために離れてcribbed保ついくつかの参照です。通常EVP_BytesToKey
は問題を引き起こします。
私は 'DES_ncbc_encrypt'を使用し、そしてそれは、JavaのDES/CBC/PKCS5Paddingによって暗号化されたパスワードを解読するには適しています。 – Edure