gpt4 book ai didi

android - APK解密密码和salt如何保护

转载 作者:行者123 更新时间:2023-11-30 02:34:27 25 4
gpt4 key购买 nike

我正在创建一个产品,其固件使用 Android 手机进行更新。 android 应用程序自动下载固件的加密版本,对其进行解密,并将其发送到设备的引导加载程序。为了生成相同的 key ,我在代码中指定了密码和盐。我担心 apk 会被反编译,有人可以解密我们的固件。

有没有更好的方法来解密/加密文件或保护代码?

代码:

private byte[] DecryptFile(byte[] encryptedFileBuffer) {        

final int iterationCount = 10;

byte[] dataDecrypted = null;
SecretKey secKey = null;
try {
byte[] salt = "salt1234".getBytes();
String accessThingy = "Password";
KeySpec keySpec = new PBEKeySpec(accessThingy.toCharArray(), salt, iterationCount);
secKey = SecretKeyFactory.getInstance("PBEWithMD5AndDES").generateSecret(keySpec);
AlgorithmParameterSpec paramSpec = new PBEParameterSpec(salt, iterationCount);


Cipher desCipher;
// Create the cipher
desCipher = Cipher.getInstance(secKey.getAlgorithm());
desCipher.init(Cipher.DECRYPT_MODE, secKey,paramSpec);

dataDecrypted = desCipher.doFinal(encrptedFileBuffer);

} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}

return dataDecrypted;

}

最佳答案

是也不是。

,如果攻击者可以执行解密例程(为什么不可以),那么固件就会受到威胁。避免这种情况的唯一方法是为设备上的 key 添加保护。您可以考虑为此提供操作系统/硬件支持,或者将 key /密码存储在设备外部。但是单个受损设备会泄露固件。这就是 DRM 难题。

而且,因为您似乎使用了 PBKDF1、MD5 和 DES,它们都不是特别安全。 MD5 是该列表中最糟糕的算法,但它也是最不可能真正成为问题的算法。您应该改用 PBKDF2、SHA-2 和 AES。尝试 this answer ,Java 8 还添加了对 PBKDF2 和 SHA-2 的支持。或者您实际上可以使用完全随机的 key ,而不是使用基于密码的加密 (PBE)。

您可能还想考虑使用非对称原语 (ECDSA/RSA) 进行加密和代码签名。

关于android - APK解密密码和salt如何保护,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26805137/

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