Android模糊隐藏salt值

Android模糊隐藏salt值,android,obfuscation,salt,Android,Obfuscation,Salt,当遵循Android开发者页面上的文档使用ServerManagedPolicy进行许可时,该部分要求声明一个名为SALT的包含20个随机字节的私有静态最终数组。这被传递给AESObfuscator的构造函数,描述中说它是“用于每个(非)模糊处理的随机字节数组”。我不熟悉这一点,但我想这是为了混淆偏好值 稍后,当我通过导出apk,使用Android SDK for Eclipse附带的ProGuard选项混淆代码本身时,我得到了最终的apk。但是在我的apk上使用像apktool这样的反向工程应

当遵循Android开发者页面上的文档使用ServerManagedPolicy进行许可时,该部分要求声明一个名为SALT的包含20个随机字节的私有静态最终数组。这被传递给AESObfuscator的构造函数,描述中说它是“用于每个(非)模糊处理的随机字节数组”。我不熟悉这一点,但我想这是为了混淆偏好值


稍后,当我通过导出apk,使用Android SDK for Eclipse附带的ProGuard选项混淆代码本身时,我得到了最终的apk。但是在我的apk上使用像apktool这样的反向工程应用程序可以以普通字节显示SALT数组。现在,就像我说的,我是新手,我的问题可能看起来有点幼稚。。。但这不是一件坏事吗?字节数组不是应该隐藏一点吗?

salt值不是一个秘密,所以如果它被公开,就不是什么问题。也就是说,混淆器会破坏代码(主要是变量和方法名),而不是值。因此,任何按原样存储的内容(字符串、字节数组、模糊密钥)都可以通过反编译恢复。 模糊处理使查找变得有点困难,但如果您有意查找随机查找的16字节数组或128位密钥,则查找并不太困难

顺便说一句,这个例子并没有真正推广最佳实践——您应该使用随机生成的
为每个加密操作创建新的salt值,并将其与加密数据一起存储。不要硬编码你的加密代码,每次都要使用。然后,该示例再次假设您将仅加密一个首选项(出于混淆目的)

谢谢。我从文件中得到的印象是,这将是实现这一目标的简单“最终方式”,因此我现在看到,在出版之前,我需要深入研究这一点。