Я не уверен, что понял ваш вопрос, но вот некоторые ответы:
Когда вы используете хеш-функцию SHA-1, она преобразует какое-то значение, которое вы задали на входе, в другое значение.В то время как ваше входное значение может быть сколько угодно, результат дайджеста будет фиксированным (ваш 160-битный результат).
Как я понимаю ваш вопрос, вы хотите придать некоторый "тип" тому, что вы задали при вводе и что вы получаете при выводе.Я думаю, в этом суть того, что вы неправильно понимаете: какие бы данные вы ни указывали при вводе, они являются битами (или байтами, если вы предпочитаете их группировать).То, что вы получаете на выходе, также является битами (или байтами).Затем вы можете представлять их так, как вам удобно: в виде шестнадцатеричного значения или в виде нескольких шестнадцатеричных значений, помещенных в массив.Это зависит от вас;)
В вашем примере кода, согласно документации :
import java.security.MessageDigest;
public class MessageDigestExample {
public static void main(String[] args) throws Exception{
String input = "This is a message";
MessageDigest hash = MessageDigest.getInstance("SHA1");
//Here "input" is a String
System.out.println("input : " + input);
//Here you convert your "input" String into a byte array
hash.update(Utils.toByteArray(input));
//Here you get the "hash.digest()" result, which is an byte array, then you convert it into some hexadecimal value
//(just check the library documentation where "Utils.toHex()" function comes from to know what it returns exactly).
//Finally you cast it into a String value as you print it.
System.out.println("digest : " + Utils.toHex(hash.digest()));