我正在我的
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; }
解决方法
有点晚了,但是:盐必须保持不变才能再次解密存储的值.
基本上Salting意味着随机化密码短语使字典攻击变得更加困难. How does a salt protect against a dictionary attack?
更新(一年后:)顺便说一下:使用SecureRandom生成器代替字节而不是随机生成器 – 它更好(我可以详细介绍,但你也可以在其他地方找到它.http://docs.oracle.com/javase/7/docs/api/java/security/SecureRandom.html)