Android: Должны ли случайные SALT-байты, передаваемые AESObfuscator, оставаться неизменными? - PullRequest
7 голосов
/ 22 октября 2011

Я реализую лицензирование в своем приложении Android, и существует массив из 20 байтов, который необходимо передать в AESObfuscator, который передается объекту ServerManagedPolicy.Может ли этот массив генерироваться случайным образом при каждом запуске кода, или он должен быть жестко закодирован?

Прямо сейчас я генерирую соль случайным образом, как это:

private static final byte[] SALT;

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

1 Ответ

6 голосов
/ 16 ноября 2011

Немного поздно, но да : соль должна оставаться прежней, чтобы иметь возможность снова расшифровывать сохраненные значения.

В основном, Salting означает рандомизацию ключевой фразы, чтобы сделать атаки по словарю намного сложнее. Как соль защищает от атаки по словарю?

Обновление (через год :) Кстати: используйте генератор SecureRandom для байтов вместо генератора случайных чисел - это лучше (я мог бы уточнить это, но вы можете найти это в другом месте как хорошо. http://docs.oracle.com/javase/7/docs/api/java/security/SecureRandom.html)

...