Member 12604237 Ответов: 0

Почему этот 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

СНБ.

0 Ответов