テキストボックスに文字列を入力して暗号化を押すJavaアプリケーションがあり、暗号化された文字列が別のテキストボックスに表示されます。これにはAES暗号化を使用します。問題は、暗号化されたテキストをバイト単位で表示できないのに、テキストボックスにバイトが表示されないことです(文字列のみを取得します)。以下は私のコードからの成果です。
public static byte[] encrypt(String plainText, String encryptionKey) throws Exception {
Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding", "SunJCE");
SecretKeySpec key = new SecretKeySpec(encryptionKey.getBytes("UTF-8"), "AES");
cipher.init(Cipher.ENCRYPT_MODE, key,new IvParameterSpec(IV.getBytes("UTF-8")));
return cipher.doFinal(plainText.getBytes("UTF-8"));
}
private class HandleThat implements ActionListener{
public void actionPerformed(ActionEvent eve){
JTextField jtf; //user will enter string here
JTextField jtf1; //this will show the encrypted text
plaintext = jtf.getText();
String error = "Error, you must provide some text";
if(eve.getActionCommand().equals("Encrypt")){
if(!jtf.getText().equals("")){
try{
byte[] cipher = encrypt(plaintext, encryptionKey);
for (int i=0; i<cipher.length; i++)
jtf1.setText(cipher[i]); //here is where I get my error
} catch (Exception e) {
e.printStackTrace();}
}else{
label.setText(error);
}
}
エラー-「クラスJTextComponentのメソッドsetTextを特定の型に適用できません。必須:文字列が見つかりました:バイトの理由:メソッド呼び出し変換によって実際の引数バイトを文字列に変換できません」
暗号をバイトから文字列に変更するにはどうすればよいですか?