Encryption 如何使用openssl解密加密文件?

Encryption 如何使用openssl解密加密文件?,encryption,hash,openssl,cryptography,Encryption,Hash,Openssl,Cryptography,我得到了一个文件,该文件使用OpenSSL支持的对称加密算法之一进行加密,并采用base64编码。对称加密算法未知。解密它所需的密码是“徒步旅行” 文件内容为U2FsdGVkX197Fk00w7IT0UQO4SftRXiS19kPPYM3MUiMA+XdAbjSDw== 第一:我通过执行file secret来确定文件的类型 结果: 第二:我使用base64命令解密base64 第三:在解密base64之后,我执行file命令来确定文件类型 结果: secretbase64.out: opens

我得到了一个文件,该文件使用OpenSSL支持的对称加密算法之一进行加密,并采用base64编码。对称加密算法未知。解密它所需的密码是“徒步旅行”

文件内容为U2FsdGVkX197Fk00w7IT0UQO4SftRXiS19kPPYM3MUiMA+XdAbjSDw==

第一:我通过执行file secret来确定文件的类型 结果:

第二:我使用base64命令解密base64

第三:在解密base64之后,我执行file命令来确定文件类型

结果:

secretbase64.out: openssl enc'd data with salted password
第三:我使用不同的密码使用openssl执行解密 错误表明它无法解密。我在想是否有办法确定这个文件中使用的密码和摘要

我尝试使用不同密码的openssl对文件进行解密。它显示了相同的错误-错误解密

openssl enc -aes-128-cbc -d -in secretbase64.out -out secretbase64-aes-128-cbc  -k hiking
openssl enc -aes-128-ecb -d -in secretbase64.out -out secretbase64-aes-128-ecb  -k hiking
openssl enc -aes-192-cbc -d -in secretbase64.out -out secretbase64-aes-192-cbc  -k hiking
我还执行了openssl中支持的所有密码

aes-128-cbc       aes-128-ecb       aes-192-cbc       aes-192-ecb       
aes-256-cbc       aes-256-ecb       base64            bf                
bf-cbc            bf-cfb            bf-ecb            bf-ofb            
camellia-128-cbc  camellia-128-ecb  camellia-192-cbc  camellia-192-ecb  
camellia-256-cbc  camellia-256-ecb  cast              cast-cbc          
cast5-cbc         cast5-cfb         cast5-ecb         cast5-ofb         
des               des-cbc           des-cfb           des-ecb           
des-ede           des-ede-cbc       des-ede-cfb       des-ede-ofb       
des-ede3          des-ede3-cbc      des-ede3-cfb      des-ede3-ofb      
des-ofb           des3              desx              rc2               
rc2-40-cbc        rc2-64-cbc        rc2-cbc           rc2-cfb           
rc2-ecb           rc2-ofb           rc4               rc4-40            
seed              seed-cbc          seed-cfb          seed-ecb          
seed-ofb          

它应该解密文件,我应该看到内容。 每个密码的错误如下所示

bad decrypt
140422261063872:error:0606506D:digital envelope routines:EVP_DecryptFinal_ex:wrong final block length:../crypto/evp/evp_enc.c:525:

有没有办法确定特定文件上的准确密码和摘要,并使用openssl进行解密?

这不是一个真正的答案,但对评论来说太多了

  • openssl enc-d
    可以为您进行base64解码,请参见手册页上的
    -a

  • 但不,密码(包括模式)和PBKDF散列不会记录在文件中,现代密码设计为除了长度之外,无法与随机数据区分(因此也无法彼此区分),因此您必须知道或主要猜测这些参数。您的密文不是16字节的倍数,因此它不能是AES山茶籽的块模式(ECB或CBC);它是8字节的倍数,因此可以是DES triple DES(OpenSSL有两个键控选项:DES ede和DES-ede3)的块模式。它也可以是任何(块)算法的流模式,也可以是流密码(RC4或1.1.0至ChaCha20),尽管这些可能性稍小

  • 您列出的“所有密码”并非全部。这是语法帮助中给出的列表,它是可以用作命令名的密码(在OpenSSL的构建中,它从构建中删除了IDEA,因为一些严格的免费构建由于过去的专利状态问题(例如Debian)而做的)。这只是
    enc
    命令支持的密码算法的一个子集,更不用说libcrypto了。在1.0.2版或1.1.0版中使用
    openssl列表密码算法
    openssl列表密码算法
    (添加空格)或
    openssl加密算法
    。注:该列表实际上是EVP支持的算法和模式,但并非所有算法和模式都受命令行
    enc
    支持;尤其是
    enc
    不能使用经过身份验证的(也称为AEAD=附加数据的经过身份验证的加密)模式,即AES-GCM AES-CCM和ChaCha20-Poly1305,或密钥封装模式


  • 祝你好运。

    如果解码的数据确实是8字节的倍数,那么在列出的单个错误时,你肯定是不正确的。因此,请重试并更新您的问题。
    bad decrypt
    140422261063872:error:0606506D:digital envelope routines:EVP_DecryptFinal_ex:wrong final block length:../crypto/evp/evp_enc.c:525: