对称加密和非对称加密

加密解密存在两种算法,对称加密和非对称加密.
加密的实质就是数学运算.
对于对称加密,存在一个KEY,所以,对称算法都是可逆的.逆运算就可以得到原文.
非对称加密分为可逆和不可逆,例如,MD5是不可逆的.其实不是说不可逆运算,只是逆运算后,源结果有无穷个.
RSA是可逆的.它是由公钥/私钥组成.公钥加密后,只有配套私钥能解.
例子:
A与B通信
A生成密钥公钥A/私钥A.
B生成密钥公钥B/私钥B.
A通过网络之类把公钥A发送给B,反之亦然.
以后,A发送给B的数据,先用公钥B加密,加密后,只有B能解开,因为只有他拥有私钥B.反之亦然.


中间人欺骗:
假设C位于A与B之间,那么A发送公钥A给B的时候,C拦截下来,把公钥C发给B.反之亦然.
然后,A发送数据,用公钥C加密,C接收后,用私钥C解密.然后再用公钥B加密后发送给B.反之亦然.


所以你明白为什么要有个MD5了吧.
另外,对称算法速度快,但可逆;非对称速度慢.所以一般地说,还是用对称算法加密,只是KEY先用非对称交换.


都是些常识性的东西,楼主先找些资料看看再说吧.

[b]RSA加密需要注意的地方[/b]
不管明文长度是多少,RSA 生成的密文长度总是固定的。
但是明文长度不能超过密钥长度。比如 Java 默认的 RSA 加密实现不允许明文长度超过密钥长度减去 11(单位是字节,也就是 byte)。也就是说,如果我们定义的密钥(我们可以通过 java.security.KeyPairGenerator.initialize(int keysize) 来定义密钥长度)长度为 1024(单位是位,也就是 bit),生成的密钥长度就是 1024位 / 8位/字节 = 128字节,那么我们需要加密的明文长度不能超过 128字节 -
11 字节 = 117字节。也就是说,我们最大能将 117 字节长度的明文进行加密,否则会出问题(抛诸如 javax.crypto.IllegalBlockSizeException: Data must not be longer than 53 bytes 的异常)。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值