RSA算法简单实现加密、解密、签名、验证(原创Java程序)

小弟我根据另外一篇已有RSA算法程序的基础上,对其关键部分进行了三处重要的修改,从而进一步完善RSA算法,详细说明如下:

一、RSA算法的核心是要生成两个大素数,所以我将上文中的输入素数,改为自动生成两个大素数。并将公钥和密钥也改为自动生成,增强代码的可利用性和可操作性,方便用户演示。

二、由于RSA算法的运算中,需要大量的mod运算。比如:加密:C=M^e(%n)       解密:M=(C^d)%n. 由于数字巨大,如果用常规的存储类型,比如int,long型,在计算过程中,如果公钥或密钥过长,会产生溢出,导致程序错误。所以,我采用了Java中的BingInteger类来存储数据并进行相应运算,利用BigInteger类中已有的多种方法(详见Java API Doc),可以很好的解决以上问题。

三、利用私钥进行加密数据,公钥进行解密数据,实现数字签名并进行验证。当然,这种做法仅限于演示,不能用于真正的商业运用。原因是,RSA算法速慢,一般不直接对大量数据进行加密签名,而是结合其它算法比如md5等,对md5算法产生的信息摘要进行加密而不直接对明文加密。从而一方面提高了安全性,另一方面极大地提高了速度。

代码我放在http://download.csdn.net/source/480334#aa感兴趣的可以去看看,谢谢了

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值