Как я могу проверить результат шифрования (SHA1PRNG и AES) в Java? - PullRequest
0 голосов
/ 26 ноября 2018

Я создал класс, в котором есть метод для шифрования данных с использованием алгоритмов SHA1PRNG и AES.

public String encrypt(String str, String pw) throws Exception{ 
    byte[] bytes = pw.getBytes();
    SecureRandom sr = SecureRandom.getInstance("SHA1PRNG");
    sr.setSeed(bytes);
    KeyGenerator kgen = KeyGenerator.getInstance("AES");    
    kgen.init(128,sr);

    SecretKey skey = kgen.generateKey();
    SecretKeySpec skeySpec = new SecretKeySpec(skey.getEncoded(),"AES");
    Cipher c = Cipher.getInstance("AES");
    c.init(Cipher.ENCRYPT_MODE, skeySpec);

    byte[] encrypted = c.doFinal(str.getBytes());
    return Hex.encodeHexString(encrypted); 
}

Я использовал этот метод в своей основной.

public static void main(String[] args) throws Exception{
    Encrytion enc = new Encrytion();  //my class name has a typo :(
    enc.encrypt("abcde", "abcdfg");
    System.out.println(enc);

}

Мой результат

com.dsmentoring.kmi.Encrytion@34340fab

только мое имя пакета + имя класса + и некоторое число (Я предполагаю, что это ссылочный адрес к фактическим данным?)

Я хочу видеть результат моего шифрования вроде 'a13efx34123fdv .......' вот так.Что мне нужно добавить в мой основной метод?Любой совет?

1 Ответ

0 голосов
/ 26 ноября 2018

Вы печатаете объект Encryption вместо результата вызова функции.Вы можете сделать это вместо:

public static void main(String[] args) throws Exception{
    Encrytion enc = new Encrytion();  //my class name has a typo :(
    String result = enc.encrypt("abcde", "abcdfg");
    System.out.println(result);
}
...