Java文本框-将字节转换为字符串

Java文本框-将字节转换为字符串,java,encryption,aes,Java,Encryption,Aes,我有一个java应用程序,您可以在文本框中输入一个字符串,点击encrypt,它将在一个单独的文本框中显示加密的字符串。我将为此使用AES加密。问题是我无法让加密文本显示为字节,但文本框不会显示字节(只接受字符串)。下面是我的代码的一个例子 public static byte[] encrypt(String plainText, String encryptionKey) throws Exception { Cipher cipher = Cipher.getInstance("AES/

我有一个java应用程序,您可以在文本框中输入一个字符串,点击encrypt,它将在一个单独的文本框中显示加密的字符串。我将为此使用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);
        }
        }
公共静态字节[]加密(字符串明文、字符串加密密钥)引发异常{
Cipher Cipher=Cipher.getInstance(“AES/CBC/NoPadding”,“SunJCE”);
SecretKeySpec key=newsecretkeyspec(encryptionKey.getBytes(“UTF-8”),“AES”);
cipher.init(cipher.ENCRYPT_模式,密钥,新的IvParameterSpec(IV.getBytes(“UTF-8”));
返回cipher.doFinal(明文.getBytes(“UTF-8”);
}
实现ActionListener的私有类句柄{
已执行的公共无效操作(操作事件前夕){
JTextField jtf;//用户将在此处输入字符串
JTextField jtf1;//这将显示加密文本
明文=jtf.getText();
String error=“error,您必须提供一些文本”;
if(eve.getActionCommand().equals(“加密”)){
如果(!jtf.getText().equals(“”){
试试{
字节[]密码=加密(明文,加密密钥);
对于(int i=0;i,如果要使用
byte
值的数组,请使用:

Arrays.toString(密码)

如果要将密码解释为
字符串
,请使用:

新字符串(密码)

如果要使用
字节的数组
值,请使用:

Arrays.toString(密码)

如果要将密码解释为
字符串
,请使用:


新字符串(密码)

显示字节和字节数组的典型格式是十六进制显示。例如,许多加密应用程序以十六进制格式显示密钥


您可以使用中显示的方法将
字节[]
转换为十六进制格式的
字符串。

显示字节和字节数组的典型格式是十六进制显示。例如,许多加密应用程序以十六进制格式显示键


您可以使用中所示的方法将
字节[]
转换为十六进制格式的
字符串。

这不是API内置的,因为通常密码文本包含不可打印的字符。您可能希望将加密文本编码为,尤其是当用户计划使用它做一些事情时(如通过电子邮件发送)。这将确保所有字符都是可打印的。

这不是API内置的,因为密码文本通常包含不可打印的字符。您可能希望将加密文本编码为,尤其是当用户计划对其执行某些操作(如通过电子邮件发送)时。这将确保所有字符都是可打印的。

是否要将字节解码为字符?请参阅-有一个构造函数
字符串(字节[]字节)
可用于此操作。使用。他们拥有丰富的知识。是否要将字节解码为字符?请参阅-有一个构造函数
字符串(字节[]字节)
哪一个可以做到这一点。使用。他们拥有丰富的知识。只是好奇,但你所说的“漂亮的打印”到底是什么意思?@MojaveStorm如果你有
字节[]{23,41,41,15}
数组的输出。toString()
将是一个字符串
[23,41,41,15]
。它是为显示而预先格式化的。数组。toString(密码)工作得很好。我错过了ArraySpect,这就是我尝试转换时失败的原因。谢谢。只是好奇,但你所说的“漂亮打印”到底是什么意思?@mojavestrom如果你有
字节[]{23,41,41,15}
数组的输出。toString()
将是一个字符串
[23,41,41,15]
。它是为显示而预先格式化的。Arrays.toString(密码)工作得非常好。我错过了arrary的特性,这就是我尝试转换时失败的原因。谢谢。