- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用对称 key (AES)加密文件,然后使用 rsa key 加密 key 。 加密工作正常,但在解密时出现错误: 这是堆栈跟踪: http://pastebin.com/37AB7EPH
我已经尝试了一切,请帮助我,谢谢。
@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);
}
解密 Asmmetric 文件...
@RequestMapping(value="/{userId}/downloadfile/{sharingId}", method = RequestMethod.GET, produces="application/json")
public ResponseEntity<?> 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<>(file, HttpStatus.OK);
}
else
{
//if no entity present against id, return not found and bad request Http status.
return new ResponseEntity<>("Not found", HttpStatus.BAD_REQUEST);
}
}
最佳答案
Cipher cipher = Cipher.getInstance("RSA");
解密时没有填充 RSA(如 RSA/ECB/NoPadding)。尝试将其更改为与加密中相同的值(“RSA/ECB/PKCS1Padding”)。 RSA 加密值也可以取消填充,如果我不清楚,请原谅我的英语:/
关于java - RSA 解密错误 BadPaddingException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30290921/
我正在尝试在我的 settings.xml 中加密服务器密码,并且在尝试部署 Artifact 时遇到此异常。 Caused by: javax.crypto.BadPaddingException:
我的应用程序提示用户输入用于加密控制文件的密码。如果输入了错误的密码,应用程序将通过创建新的控制文件进行响应。因此,我需要捕获 BadPaddingException,以便我可以触发适当的响应。 这是
如果我使用错误的 key 或错误的盐进行解密,则会抛出 BadPaddingException。我希望返回一个不正确的字符串。doFinal() 导致解密方法出现异常 消息:这只是一个示例 Unfug
这就是我创建 AES 密码的方式,但我仍然在 doFinal() 解密 block 中收到 BadPaddingException 错误 // Get the key generator
我正在使用 javax.crypto.Cipher 加密文件,然后解密它,但我仍然收到 BadPaddingException。以下类接收来自输入文件的 inputStream 和来自输出文件的 ou
我创建了一个Encryption类来加密/解密我的Android项目中的二进制数据,通过这个link . package com.my.package; import java.security.Se
在 Java 中使用 RSA 加密/解密时,我遇到了一个非常特殊的问题。 示例代码: KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA"
我正在使用以下(片段)代码来加密用户的私有(private)数据以存储在数据库中,然后解密以便他们可以查看。 Cipher cipher = Cipher.getInstance("DESede");
这是我的加密设置: public static String encryptionAlgorithm = "AES"; public static short encryptionBitCount =
这是我的加密设置: public static String encryptionAlgorithm = "AES"; public static short encryptionBitCount =
我正在研究 AES 算法,但我遇到了无法解决的异常。 javax.crypto.BadPaddingException: Given final block not properly padded a
我有这种加密方法: private byte[] encrypt(byte[] data) throws NoSuchAlgorithmException, NoSuchPaddingExceptio
我正在使用对称 key (AES)加密文件,然后使用 rsa key 加密 key 。 加密工作正常,但在解密时出现错误: 这是堆栈跟踪: http://pastebin.com/37AB7EPH 我
我的 RSA 加密程序中出现 BadPaddingException。我不知道为什么会发生。 import java.io.ByteArrayInputStream; import java.io.B
我正在加密字符串并将它们写入文本文件。为了解密内容,我正在读取该文件并打印解密的数据。当我使用一个字符串值测试我的代码时,它的加密和解密效果非常好;但是,当我添加更多字符串进行加密时,加密工作正常,但
我正在尝试创建 AES 加密/解密方法,但如果不使用 AES/ECB/NoPadding,我似乎无法获得原始输入。现在我尝试使用 AES/CBC/PKCS7Padding。我已经确认从文件读取和写入字
我试图从这里收集有关加密/解密的所有可能信息。修补它,一些成功和失败。 但现在我已经应用了代码及其成功与否。某些文件(exe 或 msi 的)正在运行,但它们仍然给出有关 BadPaddingExce
我正在尝试运行一个简单的加密/解密程序。我收到填充异常。一定有什么隐藏的东西是我不知道的。我基本上加密了一个字符串,将其写入文件,读回,然后解密。原加密数组解密没有问题。我将原始加密数组与从文件中读回
我已获得一个 RSA 公钥和一个带有 OAEP SHA-256 填充的 RSA 私钥。我试图简单地加密一个随机字符串,然后解密它以断言结果等于原始结果。 这是我得到的公钥: -----BEGIN RS
我正在对我的文件进行加密/解密。代码如下。我找不到问题所在。我错过了什么吗?我需要实现 128 位 AES 加密。有什么不对的吗?以错误结束 "javax.crypto.BadPaddingExce
我是一名优秀的程序员,十分优秀!