长生殿是哪个朝代的 长生殿是哪个朝代的作品
1393 2025-05-12 07:23:15
社区
Java 帖子详情 为什么加密可以,解密却失败? 落然 2011-05-29 09:56:00 我使用AES对称加密算法加密,出现如下错误:
javax.crypto.IllegalBlockSizeException: Input length must be multiple of 16 when decrypting with padded cipher
at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)
at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)
at com.sun.crypto.provider.AESCipher.engineDoFinal(DashoA13*..)
at javax.crypto.Cipher.doFinal(DashoA13*..)
at unit9.work.AES.Dec_AES(AES.java:61)
at unit9.work.CommunicationClient.run(CommunicationClient.java:155)
at java.lang.Thread.run(Thread.java:662)
Exception in thread "Thread-2" java.lang.NullPointerException
at java.lang.String.
at unit9.work.CommunicationClient.run(CommunicationClient.java:156)
at java.lang.Thread.run(Thread.java:662)
删除代码中的解密部分,则可以输出解密结果。加上则不显示输出内容。
...全文
14945 15 打赏 收藏 为什么加密可以,解密却失败? 我使用AES对称加密算法加密,出现如下错误: javax.crypto.IllegalBlockSizeException: Input length must be multiple of 16 when decrypting with padded cipher at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..) at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..) at com.sun.cr 复制链接
扫一扫 分享 转发到动态 举报
写回复 配置赞助广告取 消
确 定
用AI写文章 15 条回复 切换为时间正序 请发表友善的回复… 发表回复 打赏红包 需支付: 0.00 元 取 消 确 定 落然 2011-05-30 打赏举报 回复 好的,O(∩_∩)O谢谢~ 阳明 to life 2011-05-30 打赏举报 回复 [Quote=引用 13 楼 s_tangbao 的回复:]
还是非常感谢你,好喜欢你那个头像,看起来好好玩儿。
[/Quote]
呵呵,再仔细对比下,特别是长度问题,实在不行可以试试转成base64的字符串再传输到另外边解码,按道理的话哈,算法相同,对称密钥相同,中间数据相同不会出问题的 落然 2011-05-30 打赏举报 回复 还是非常感谢你,好喜欢你那个头像,看起来好好玩儿。 阳明 to life 2011-05-30 打赏举报 回复 传输前可以解密出来,传输后内容一样?长度一样?却解密不出来?
对称密钥也相同吧,这个我真不能理解了 落然 2011-05-29 打赏举报 回复 但是还是不出来解密后结果的 落然 2011-05-29 打赏举报 回复 不好意思,我刚刚又改了一下,发现传送是没有问题的,内容一样。我传输用的是DatagramPacket,传送比特数组 阳明 to life 2011-05-29 打赏举报 回复 我看了API,doFinal都返回的byte[],你直接转成字符串? 阳明 to life 2011-05-29 打赏举报 回复 首先先确定下。。。你加密完返回的就是这么个字符串是吧,然后加密了就直接传输过去的,没做其他操作?用什么方式传输的?
java桌面程序还是jsp 落然 2011-05-29 打赏举报 回复 传送后,密文信息改变了
传输前:T9T&ԅN�m�QK
传输后:9T&詤N騧淨K抑z
是什么原因? 阳明 to life 2011-05-29 打赏举报 回复 [Quote=引用 5 楼 s_tangbao 的回复:]
我试了,未传输之前,进行解密,解出来的是正确的
[/Quote]
看看传输前后有啥区别,再找找原因,就这样听你的说明也还是不太了解具体哪个点出错了 落然 2011-05-29 打赏举报 回复 我试了,未传输之前,进行解密,解出来的是正确的 阳明 to life 2011-05-29 打赏举报 回复 我没有用过JAVA的cipher加密哈,但是道理都差不多
如果你加密完的是一个byte数组,你可以转成base64码传输,这样在传输到解密端先解码再通过cipher解密,这个过程不会丢失或增长字符
如果是加密完是一个字符串,你直接在加密完部分丢到解密看行不行,先别传输 落然 2011-05-29 打赏举报 回复 我输入了16个1,还是出现刚刚那样的一堆错误。还可能是什么原因? 落然 2011-05-29 打赏举报 回复 你的头像好好玩,是这样的,刪除解密部分能輸出加密后的结果,加密后就是传输了。再次掉用使用的是getData()获取数据。 阳明 to life 2011-05-29 打赏举报 回复 。。。。你刪除解密部分能輸出解密结果?
提示是输入的密文长度必须是16的倍数,调试看看长度,你加密出来之后是否做过什么处理,传输过程中是否有字符增减 Android RSA加密解密demo Android RSA加密解密demo,详情请参看博客:http://blog.csdn.net/bbld_/article/details/38777491 AES 加密算法源代码20091025 (C++版) AES类的三个公共函数
//设置AES类的模式为加密还是解密,并说明密钥长度和明文长度(解密时为密文)
//key 密钥数据
//keySize 密钥长度
//inSize 明文长度(解密时为密文)
//isdecrypt 是否为解密(解密时为TRUE)
//成功返回1 失败返回-1 失败是由于参数设置不正确引起
int setMode(unsigned char* key, int keySize, int inSize, bool isdecrypt);
//加密数据
//input 明文数据,长度为setMode时inSize指定
//ouput 加密后的数据,长度为setMode时inSize指定
void cipher (const unsigned char* input, unsigned char* output);
//解密数据
//input 密文数据,长度为setMode时inSize指定
//output 明文数据,长度为setMode时inSize指定
void invCipher(const unsigned char* input, unsigned char* output);
//例子
#include "aes.h"
#include
void main()
{
char* str = "0123456789abcdef"; //被加密的数据16字节
char* pwd = "1111111111111111"; //密码16字节
char out[17]; //输出缓存
out[16]='\0';
AES aes;
/*加密时*/
aes.setMode(pwd, 16, 16, FALSE);
aes.cipher(str, out);
printf(out); //输出加密数据
printf("\n");
/*解密时*/
aes.setMode(pwd, 16, 16, TRUE);
aes.invCipher(out, out);
printf(out);
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/scofield_zhang/archive/2008/07/21/2687037.aspx RSA加密的原理——为什么被公钥加密的可以被私钥解密? RSA加密的原理——为什么被公钥加密的可以被私钥解密?
目录
一,RSA 数学理论基础
二,RSA实现原理
三,RSA加密的过程
四,参考文献
引言
在密码学最开始,都是使用的普通加密模式
A 用加密规则加密了字符串m 然后发给B
B 用A的加密规则来解密,得到原始信息m
在这个过程中A必须把自己的加密规则告诉B,否则B无... PHP 安全:如何在PHP中加密和解密字符串? 如今,数据安全至关重要。加密在保护敏感信息免遭未经授权的访问方面起着至关重要的作用。PHP 是一种通用编程语言,通过 OpenSSL 扩展提供强大的加密功能。在本文中,我们将探讨如何利用 OpenSSL 的强大功能执行 PHP 加密和解密数据。PHP对数据进行加密和解密是重要的一步。数据通过加密过程从明文转换为密文,使未经授权的用户无法理解。使用加密可以保护敏感数据免受威胁和未经授权的访问。使用 AES(高级加密标准)等众所周知的方法,适用于 PHP 的 OpenSSL 插件提供了可靠的加密和解密功能。 linux中java加密des加密解密失败问题 原因:windows中,java使用des加密,生成的密钥是稳定不变的所以,加密解密成功。
但是在linux中,des加密解密生成的密钥,是在变化的,所以加密后,解密失败,
代码修改如下:
生成密钥方法:
public static String getSecretKey(String key) throws Exception {
KeyGenerator keyGen...
Java
51,397
社区成员
85,809
社区内容
发帖 与我相关 我的任务 Java Java相关技术讨论 复制链接
扫一扫 分享 确定 社区描述 Java相关技术讨论 javaspring bootspring cloud 技术论坛(原bbs) 社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告 试试用AI创作助手写篇文章吧
+ 用AI写文章