Почему этот java-код использует заранее определенный секретный ключ?
public class Encryp { public static void main(String[]args)throws Exception{ KeyGenerator k1=KeyGenerator.getInstance("AES"); k1.init(128); SecretKey s1=Test.decodekey("IvIdMZRVVbbN2DqjEdVesg=="); Cipher ciper = Cipher.getInstance("AES"); String plaintext="sid happy"; System.out.println("text"+plaintext); String encry=encrypt(plaintext,s1,ciper); System.out.println("after encryption "+encry); SecretKey s2=Test.decodekey("IvIdMZRVVbbN2DqjEdVesg==");; String decry=decrypt(plaintext,s2,ciper); System.out.println("after decryption "+decry); } public static String encrypt(String plaintext, SecretKey s1,Cipher ciper) throws Exception{ byte[] plntxtbyt=plaintext.getBytes(); ciper.init(Cipher.ENCRYPT_MODE, s1); byte[] encrypbyt=ciper.doFinal(plntxtbyt); String enc = DatatypeConverter.printBase64Binary(encrypbyt); return enc; } public static String decrypt(String enc, SecretKey s1,Cipher ciper) throws Exception{ byte[]decod=DatatypeConverter.parseBase64Binary(enc); System.out.println("after decryption "+decod.length); ciper.init(Cipher.DECRYPT_MODE, s1); byte[] encrypbyt=ciper.doFinal(decod); return new String(encrypbyt); }
Что я уже пробовал:
Я ищу краткое объяснение этого кода. Мой вопрос касается шифрования и дешифрования Java - что именно делает этот код? Зачем здесь использовать заранее определенный секретный ключ?
Richard MacCutchan
Шифрование всегда требует ключа для преобразования простых данных в зашифрованные. В большинстве случаев код запрашивает ключ у пользователя, а не жестко кодирует его, как описано выше.
Sergey Alexandrovich Kryukov
Правильно. Без описания сценария вопрос практически не имеет смысла. Должно быть ясно, кто к чему получает доступ, а кто заблокирован, какие действия должны дать доступ и так далее.
—СА
Richard MacCutchan
СНБ.