中介网站模板,专用车网站建设多少钱,免费做网站的,嘉兴门户网站建设我更改了一些代码行,以保证大文件的加密.现在我遇到了问题,解密不起作用.我收到以下错误消息/异常#xff1a;Error encrypting/decrypting fileat Algorithmus.Encryptor.doCrypto(Encryptor.java:71)at Algorithmus.Encryptor.decrypt(Encryptor.java:39)at GUI.MainWindow$…我更改了一些代码行,以保证大文件的加密.现在我遇到了问题,解密不起作用.我收到以下错误消息/异常Error encrypting/decrypting fileat Algorithmus.Encryptor.doCrypto(Encryptor.java:71)at Algorithmus.Encryptor.decrypt(Encryptor.java:39)at GUI.MainWindow$encryptThread.run(MainWindow.java:838)Caused by: javax.crypto.BadPaddingException: Given final block not properly paddedat com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:966)at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:824)at com.sun.crypto.provider.AESCipher.engineDoFinal(AESCipher.java:436)at javax.crypto.Cipher.doFinal(Cipher.java:2165)at Algorithmus.Encryptor.doCrypto(Encryptor.java:60)... 2 more我试图将Transoformation参数更改为AES / CBC / PKCS5Padding,但这没有任何效果.有谁知道,如何优化给定的代码private static final String ALGORITHM AES;private static final String TRANSFORMATION AES;public static void encrypt(String key, File inputFile, File outputFile)throws ExtendedException {doCrypto(Cipher.ENCRYPT_MODE, key, inputFile, outputFile);}public static void decrypt(String key, File inputFile, File outputFile)throws ExtendedException {doCrypto(Cipher.DECRYPT_MODE, key, inputFile, outputFile);}private static void doCrypto(int cipherMode, String key, File inputFile,File outputFile) throws ExtendedException {try {Key secretKey new SecretKeySpec(key.getBytes(), ALGORITHM);Cipher cipher Cipher.getInstance(TRANSFORMATION);cipher.init(cipherMode, secretKey);FileInputStream inputStream new FileInputStream(inputFile);CipherOutputStream out new CipherOutputStream(new FileOutputStream(outputFile), cipher);byte[] buffer new byte[8192];byte[] outputBytes null;FileOutputStream outputStream new FileOutputStream(outputFile);int count;while ((count inputStream.read(buffer)) 0){out.write(buffer, 0, count);outputBytes cipher.doFinal(buffer);}inputStream.close();outputStream.close();} catch (NoSuchPaddingException | NoSuchAlgorithmException| InvalidKeyException | BadPaddingException| IllegalBlockSizeException | IOException ex) {throw new ExtendedException(Error encrypting/decrypting file, ex);}}解决方法:只需使用CipherOutputStream即可.不要调用cipher.doFinal(缓冲区),也不要忘记关闭输出流.FileInputStream inputStream new FileInputStream(inputFile);FileOutputStream fileout new FileOutputStream(outputFile);CipherOutputStream out new CipherOutputStream(fileout , cipher);try {byte[] buffer new byte[8192];int count;while ((count inputStream.read(buffer)) 0) {out.write(buffer, 0, count);}} finally {out.close();inputStream.close();}CipherOutputStream为您管理密码.它将在关闭流并刷新内部缓冲区时调用doFinal.标签java,padding,cryptography,encryption,aes来源 https://codeday.me/bug/20190628/1311548.html