【发布时间】:2017-11-03 11:18:51
【问题描述】:
我正在对 API 进行逆向工程,发现它使用 AES-256-CBC 进行加密。
我还发现它使用 EVP_BytesToKey 来加密 HTTP 请求。在我发现this 之后,我对其进行了测试,但我遇到了一些问题(可能是因为我没有经验)。我不知道把密码放在哪里
这是需要解密的:FP2xttTh/wm5Kr45Vh/PEvsdxgfL3NgxxMMk9hTkPfJd7vSJXTlhjiZlQajnBcMAVknANpv5FNCMRD+epDSOA2epKOzstSmhC0il2TlwgKqaT+97zomCMUCIfdaJYnLz5gBth1MIpxO30bx9zPg8cbOJcLnMmCo3vtSDCalgjHICf5FevI7DgrWnWC1U4wab0rx/rWhGFJ0sOW1ImDi9DkCy+guQZIrojbZxRlvGzv1mU/avP5hbKgWIheJpYQvvM12RyCNuVxjHK/oZ1mCQLVjvpED291lxsGTNHPUrc2NI7LCj/xOztjgsukpBP9K1nsUIgEyfVFUfTf5sh4QPccZnJ1bzKqPD
告诉我密钥和解密方式的人也给了我这个
已移除
【问题讨论】:
-
您的问题有些不完整,请假设我们只知道您所说的而不是您的全部想法。你到底有什么问题(密码是
args[ARG_INDEX_PASSWORD].getBytes(ASCII)但是在你的情况下你可以尝试base64解码值) -
我在 this 这样的主要方法中添加了要解密的密码和字符串。但是在我运行它之后我得到了这个
Exception in thread "main" java.lang.IllegalStateException: Bad algorithm, mode or corrupted (resized) ciphertext. at testEncryption.OpenSSLDecryptor.main(OpenSSLDecryptor.java:162)我可能错过了一些愚蠢的东西 -
@gusto2 忘记给你加标签了,对不起
-
您的“密码”看起来根本不像密码;在 de-base64 之后,它是正确的 size 是 AES-192 密钥(不是 256),但它的内容显然是一个截断的 RSA 公钥,它是(或将是)一个非常差、低-对称密钥的熵选择。您的数据不能是 AES-CBC 密文,因为在 de-base64 之后它不是 16 个字节的倍数,而且它绝对不是链接的 OpenSSL 'enc' 加密的正常 'Salted__' 格式(尽管 EVP_BytesToKey 确实有其他用途) .无论您尝试做什么,都非常糟糕。
-
@dave_thompson_085 告诉我密钥及其解密方式的人也给了我这个
#!/usr/bin/env bash # base64 data must be stored in a file named "...-tmp.decrypt" # Usage: decrypt.sh secret sessionId SALT="$(cat $2 | base64 -d | head -c +8 | od -A n -t x1 | head -n 1 | tr -d " ")" echo -n "Salted__" > $2.enc cat $2 | base64 -d >> $2.enc cat $2.enc | openssl aes-256-cbc -d -k "$1" -md md5 -S "$SALT" rm $2.enc并且密码肯定是我帖子中的密码。我想用Java编码跨度>
标签: java encryption openssl aes