您的代码中有些混乱,可能是因为缺少了您调用的某些方法,或者可能是因为您使用的是密钥来加密…您的密钥(!!!)
让我们尝试对简单的方法进行加密和解密,删除代码中严格不需要的所有内容(例如,对密钥进行编码并将其保存到文件中,然后在不解码的情况下还原密钥等)。
让我们看一下以下基于您的简化代码:
KeyGenerator keyGenS = KeyGenerator.getInstance("AES"); keyGenS.init(128); SecretKey sKey1 = keyGenS.generateKey(); Cipher aesCipher = Cipher.getInstance("AES"); aesCipher.init(Cipher.ENCRYPT_MODE,sKey1); byte[] byteText = "Insert here whatever you want to crypt".getBytes(); byte[] byteCipherText = aesCipher.doFinal(byteText);我们使用KeyGenerator生成了密钥,然后使用该密钥初始化了Cipher实例。在这一点上,我们只需调用
doFinal()传递要加密的plainText。
加密部分就这些了。当然,您可以根据需要将密钥保存
byteCipherText到文件中,但是其他所有人员(至少)是没有用的。
解密部分像加密一样容易。逻辑是一样的。如果您将密钥保存在文件中,只需将其读入
byte[],然后将其用于初始化密码实例。像这样:
aesCipher.init(Cipher.DECRYPT_MODE, sKey1); byte[] plainText = aesCipher.doFinal(byteCipherText);
如果将以上所有代码放入a中
main()并运行,则应与中
plainText的相同
byteText。
您可以使用
System.out.println(new String(plainText));
尝试从这里开始,然后添加您可能需要的所有其他内容。
希望这可以帮助。
问候



