title: RSA Decryption Error BadPaddingException
body: <p>I am encrypting file with symmetric key(AES), and then encrypting key with rsa key.
      Encrption is working fine but in decryption it gives error:
          Here is the stacktrace:
          <a href="http://pastebin.com/37AB7EPH" rel="nofollow">http://pastebin.com/37AB7EPH</a></p>
  
  <p>I have tried everything please help me thanks.</p>
  
  <pre><code>@RequestMapping(value= "/{userId}/uploadresource/{userEmail:.*}", method = RequestMethod.POST )
  @ResponseBody
  public void GetResourcesByUser(@PathVariable("userId") int UserId, @PathVariable("userEmail") String userEmail,  HttpServletRequest request, @RequestParam MultipartFile file ) throws InvalidKeySpecException, NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException, IOException{
      Users recieverUser =userService.GetUserByEmail(userEmail);
      Users senderUser= userService.getUserById(UserId);
      int receiverUserId = recieverUser.getUser_id();
      Profile receiverProfile = userService.getUserProfile(receiverUserId);
      byte[] receiverPublicKey=receiverProfile.getPublicKey();
      PublicKey testPubKey=X509CertificateGenerator.encodedByteToPublicKey(receiverPublicKey);            
  
      KeyGenerator keyGen = KeyGenerator.getInstance("AES");
      keyGen.init(192); // for example
      SecretKey secretKey = keyGen.generateKey();
  
      byte[] secretKeyEncoded= secretKey.getEncoded();
  
      Cipher cipher = Cipher.getInstance("AES");
      cipher.init(Cipher.ENCRYPT_MODE, secretKey);
      byte[] cipherData = cipher.doFinal(file.getBytes());
  
      Cipher cipher1 = Cipher.getInstance("RSA/ECB/PKCS1Padding");
      cipher1.init(Cipher.ENCRYPT_MODE, testPubKey);
      byte[] aesKeyEncryptedBytes = cipher.doFinal(secretKeyEncoded); 
  
  
      String senderUserName= senderUser.getUser_email();          
      AsymetricSharing sharing= new AsymetricSharing();
  
      sharing.setReceiverId(receiverUserId);
      sharing.setResourceFile(cipherData);
      sharing.setResourceName(file.getOriginalFilename());
      sharing.setSenderId(senderUser.getUser_id());
      sharing.setSenderName(senderUserName);
      sharing.setSymetricKey(aesKeyEncryptedBytes);
  
      resourseService.uploadAsymmetricResource(sharing);      
      //resources=this.resourseService.GetResourcesInGroup(group_id);     
  }
  </code></pre>
  
  <p>Decrypt Asmmetric File...</p>
  
  <pre><code>@RequestMapping(value="/{userId}/downloadfile/{sharingId}", method = RequestMethod.GET, produces="application/json")
      public ResponseEntity&lt;?&gt; downloadAsymmetricFile(@PathVariable("sharingId") int sharingId, @PathVariable("userId") int userId, HttpServletResponse response) throws IOException, SQLException, InvalidKeyException, InvalidAlgorithmParameterException, NoSuchAlgorithmException, NoSuchProviderException, NoSuchPaddingException, IllegalBlockSizeException, BadPaddingException, InvalidKeySpecException {     
  
      AsymetricSharing file= resourseService.getFile(sharingId);
  
      if(file!=null){ 
          Profile receiverProfile=  userService.getUserProfile(userId);
  
          byte [] receiverPrivateKey=receiverProfile.getPrivateKey();         
  
          PrivateKey testPvtKey=Converter.encodedByteToKey(receiverPrivateKey);
  
          Cipher cipher = Cipher.getInstance("RSA");
          cipher.init(Cipher.DECRYPT_MODE, testPvtKey);
  
          byte[] symetricKeyBytes = cipher.doFinal(file.getSymetricKey());    
  
          SecretKey symetricKey = new SecretKeySpec(symetricKeyBytes, "AES");
  
          Cipher cipher1 = Cipher.getInstance("AES");
          cipher1.init(Cipher.DECRYPT_MODE, symetricKey);
          byte[] plainText = cipher.doFinal(file.getResourceFile());
  
          response.setContentLength(plainText.length);
          response.setHeader("Content-Disposition","attachment; filename=\"" + file.getResourceName() +"\"");
          FileCopyUtils.copy(plainText, response.getOutputStream());
          return new ResponseEntity&lt;&gt;(file, HttpStatus.OK);
      }
      else
      {
          //if no entity present against id, return not found and bad request Http status.
          return new ResponseEntity&lt;&gt;("Not found", HttpStatus.BAD_REQUEST);
      }
  }
  </code></pre>