Android:传递给AESObfuscator的随机SALT字节是否需要保持不变?

Chr*_*rry 7 obfuscation android salt

我正在我的Android应用程序中实现许可,并且需要将20个字节的数组传递到传递给ServerManagedPolicy对象的AESObfuscator.每次运行代码时都可以随机生成此数组,还是必须进行硬编码?

现在我随机生成这样的盐:

private static final byte[] SALT;

static {
    Random random = new Random();
    random.setSeed(System.currentTimeMillis());
    byte[] buf = new byte[20];
    random.nextBytes(buf);
    SALT = buf;
}
Run Code Online (Sandbox Code Playgroud)

小智 6

有点晚了,但肯定的:盐必须保持不变,以便能够再次解密存储的值.

基本上,Salting意味着随机化一个密码短语,使词典攻击变得更加困难.盐如何防止字典攻击?

更新(一年后:)顺便说一句:使用SecureRandom生成器代替字节而不是随机生成器 - 它更好(我可以详细介绍,但你也可以在其他地方找到它.http://docs.oracle .com/javase/7/docs/api/java/security/SecureRandom.html)