从Windows(Bouncy Castle)上传加密文件时,AES Decryption在unix服务器中不起作用

时间:2017-03-14 05:16:42

标签: java encryption bouncycastle dos2unix

我们的一个客户将在我们的应用程序中上传一个ENCRYPTED文件,我们将该文件移动到我们的AIX服务器并解密它。该文件未正确解密。如果我通过SFTP手动将加密文件移动到AIX服务器,则解密工作完美但不是从Windows上载文件时。客户端加密和我们解密的关键是相同的。但是,对于所有加密文件都没有发生这种情况,对于少数文件存在问题,我们在这些文件中找不到任何不同的内容。我们使用Bouncy Castle生成密钥以及加密和解密。

例外:

javax.crypto.IllegalBlockSizeException: last block incomplete in decryption
        at org.bouncycastle.jcajce.provider.symmetric.util.BaseBlockCipher.engineDoFinal(Unknown Source)
        at javax.crypto.Cipher.doFinal(Unknown Source)

解密代码:

public void decryptFile(InputStream fis, OutputStream fos)
        throws IOException,
        ShortBufferException,
        IllegalBlockSizeException,
        BadPaddingException
{
   byte[] buffer = new byte[16];
   int noBytes = 0;
   byte[] cipherBlock =
           new byte[decryptCipher.getOutputSize(buffer.length)];
   int cipherBytes;
   while((noBytes = fis.read(buffer))!=-1)
   {
       cipherBytes =
               decryptCipher.update(buffer, 0, noBytes, cipherBlock);
       fos.write(cipherBlock, 0, cipherBytes);
   }
   cipherBytes = decryptCipher.doFinal(cipherBlock,0);
   fos.write(cipherBlock,0,cipherBytes);

   fos.close();
   fis.close();
}

我们如何处理这个问题?

0 个答案:

没有答案