Java安全系列-RSA加密

Java安全系列-RSA加密

在现在的信息安全体系中,加密已经成为了一个常识。在诸多场合下为了数据安全和可靠,很多情况下需要使用加密,如:密码体系、安全邮件、网络传输等等方面。

在现有的加密算法中,大致可以分为两大类:对称加密和非对称加密。

在对称加密中,较为典型的算法为:DES、IDEA、AES等;

在非对称加密体系中,其中较为常用的算法有:RSA加密体系,ECC加密等。

在上述的加密过程中,都需要借助密钥。在对称加密算法体系中,其加密解密,需要使用相同的密钥进行加密和解密。在该过程中,产生密钥E,同时有明文数据P,为此采用相应的对称算法对其进行加密,会得到密文C。该过程则为对称加密过程。在加密后,若需要对数据进行解密,则同样需要使用密钥E,对密文C进行解密,得到明文P,该过程为解密过程。

在对称加密中,有:加密速度快、计算量小等优点,并可公开算法,只需做到密钥的管理,即可保证加密的安全性。但是在对称加密体系中,密钥是多种多样的,并且为了保证数据可靠,必须做到严格的密钥管理,会对用户造成负担,从而造成数据的不安全性。

在非对称加密体系中,需要协商产生密钥对:私钥-公钥,产生一对密钥后,公钥可以公开使用,交由客户端或用户使用,令客户在加密时,采用公钥进行加密,产生密文,交由私钥拥有者进行使用。拥有私钥的一方,接收到经过公钥加密的密文后,使用只有其保留的私钥对密文进行解密,从而可以得到明文。该过程则为普遍的“公钥加密,私钥解密”的过程体系。并且在非对称加密中,可以使用“私钥加密,公钥解密”的过程,来实现数字签名,因为私钥加密,可以实现不可否认性。由于在非对称加密体系中,只有一部分有权限的用户,可以保留私钥,其他用户只能保留公钥,公钥可以公开在网络上进行传输。因此用户通过使用私钥对数据进行加密,则一定能够保证该数据是由私钥持有者进行加密(签名),其他用户在接收到密文时,采用公钥进行解密,则一定能够确认信息发送者是唯一的。

RSA数字签名算法的过程为:A对明文m用解密变换作: s Dk (m)=md mod n,其中d,n为A的私人密钥,只有A才知道它;B收到A的签名后,用A的公钥和加密变换得到明文,因: Ek(s)= Ek(Dk (m))= (md)e mod n,又 de1 mod (n)即de=l(n)+1,根据欧拉定理m(n)=1 mod n,所以Ek(s)=ml(n)+1=[m(n)]em=m mod n.若明文m和签名s一起送给用户B,B可以确信信息确实是A发送的.同时A也不能否认送给这个信息,因为除了A本人外,其他任何人都无法由明文m产生s.因此RSA数字签名方案是可行的. —-引用至RSA算法和RSA数字签名算法的实现

在非对称加密体系中,其理论支撑为“大数分解“的数学难题,若数足够大,我们可以认定,该难题是无解的,从而保证加密的安全性。

其中在Linux的SSH连接中,可以配置免密钥登录,实际上,依然采用的是非对称加密体系,对连接进行加密。如以下过程:

  1. A主机希望通过SSH免密钥连接到B主机;
  2. 在A主机中,产生密钥对,E1(私钥)、E2(公钥);
  3. 将E2分发到B主机中;
  4. A主机连接B主机时,A主机发送连接请求到B主机,其中携带信息包括:IP地址、用户名等;
  5. B主机接收到数据后,查询已知主机列表中是否有该IP地址和用户,若没有则提示用户是否要添加到已知列表。若有,则B主机会随机产生一个字符串S,用于身份认证,该字符串S使用E2公钥进行加密发送到主机A中;
  6. 主机A接受到加密后的随机字符串,主机A使用其私钥对其进行解密,得到明文数据P,发送到主机B中;
  7. B接受该明文数据,对明文进行判断,若和产生的随机数一致,则连接成功;

图引用至:ssh免密码登录的原理

ssh免密码登录原理图

其他加密算法,如:MD5、SHA-1、SHA2等,则为Hash算法,该过程一般来说,是不可逆的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值