Java:如何为JButton设置静态字节数组密钥?加密系统改造求助
解决方法:将动态读取密钥改为静态密钥值
嘿,这事儿超简单!你现在的代码是从time_128这个JTextBox里读取密钥,要改成在key_128按钮的点击事件里用静态密钥,只需要替换掉获取密钥的那一行代码就行,不用再依赖文本框输入了。
修改步骤:
- 删掉从文本框读取密钥的逻辑:
byte[] K = time_128.getText().getBytes(); - 直接在代码里定义固定的静态密钥,注意要符合你加密算法的长度要求(比如AES-128需要16字节的密钥)
修改后的代码片段:
// 获取用户输入的明文 byte[] plain = plaintext.getText().getBytes(StandardCharsets.UTF_8); // 设置静态128位密钥(示例值,你可以换成自己的密钥) // 方式1:直接用字节数组(16字节=128位) byte[] K = new byte[]{ 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10 }; // 方式2:从固定字符串转换(确保字符串对应的字节数是16,比如UTF-8下16个字符) // byte[] K = "MySecure128Key123!".getBytes(StandardCharsets.UTF_8); // 执行加密逻辑 byte[] encrypted = encrypt(plain, K); // 转换为十六进制字符串并显示到结果框 String encryptedHex = new String(bytesToHex(encrypted)); encryptedtext.setText(encryptedHex);
额外提示:
- 如果你用的是AES这类对称加密算法,密钥长度必须严格匹配(128位对应16字节,192位24字节,256位32字节),否则加密方法可能会抛出异常
- 如果原来的
time_128文本框已经不需要了,可以从界面上移除它,避免用户困惑 - 静态密钥硬编码在代码里要注意安全问题,如果是生产环境,建议用更安全的方式存储密钥(比如配置文件、密钥管理服务),测试或演示场景下硬编码没问题
内容的提问来源于stack exchange,提问作者ays
相关产品推荐
相关产品推荐

