gpt4 book ai didi

android - 在使用 OpenSSL enc 子命令加密的 Android 上解密文件

转载 作者:太空狗 更新时间:2023-10-29 14:48:26 24 4
gpt4 key购买 nike

我在服务器中有一个使用 OpenSSL 命令加密的文件:

openssl enc -aes-256-ecb -salt -in ori.pdf -out encrypted.pdf -pass pass:testpassword -p

下面是加密完成后显示的key和salt:

salt=BE1EFCBAE984CB24
key=50B62ECEF1B777353372A44CDDC463987815F783E39D68B8EE6A0AB74A79C7FA

如果使用以下解密,我曾尝试解密:

String key  = "50B62ECEF1B777353372A44CDDC463987815F783E39D68B8EE6A0AB74A79C7FA";
byte[] keyBytes = key.getBytes("UTF-8");
SecretKey keySpec = new SecretKeySpec(keyBytes, "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS7Padding");
cipher.init(Cipher.DECRYPT_MODE, keySpec);
buffer = cipher.doFinal(buffer);

如何在Android中解密加密文件?

最佳答案

我在原来的回答上搞砸了。我将该字符串误读为“base 64”。事实上,它只是“十六进制编码”。

更改此语句:

byte[] keyBytes = key.getBytes("UTF-8");

变成这样:

byte [] keyBytes = hexStringToByteArray(key);

其中 hexStringToByteArray 是函数 lifted from this answer here.

public static byte[] hexStringToByteArray(String s) {
int len = s.length();
byte[] data = new byte[len / 2];
for (int i = 0; i < len; i += 2) {
data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
+ Character.digit(s.charAt(i+1), 16));
}
return data;
}

关于android - 在使用 OpenSSL enc 子命令加密的 Android 上解密文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37476331/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com