Я пытаюсь реализовать алгоритм подписи DSA и столкнулся с проблемой. Я использую класс java.security
MessageDigest
, вот код:
MessageDigest md;
md = MessageDigest.getInstance("SHA-1");
md.update(text.getBytes());
return new BigInteger(md.digest());
Text — это случайный объект String. Проблема в том, что этот код дает мне отрицательные значения хеша, что не принимается алгоритмом. Я делаю что-то неправильно? Заранее спасибо.
P.S. Кстати, я тоже пытался реализовать DSA без использования BigInteger, возможно ли это? Я не нашел значений L и N меньше 1024 и 160, поэтому понятия не имею, какие значения брать и какую хеш-функцию использовать. Буду очень благодарен услышать ответы на эти вопросы.