Java文本框-将字节转换为字符串
我有一个java应用程序,您可以在文本框中输入一个字符串,点击encrypt,它将在一个单独的文本框中显示加密的字符串。我将为此使用AES加密。问题是我无法让加密文本显示为字节,但文本框不会显示字节(只接受字符串)。下面是我的代码的一个例子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/
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的特性,这就是我尝试转换时失败的原因。谢谢。