RSA 每次公钥加密不同结果

今天服务器端一哥们突然跑过来跟我说:我发现公钥每次加密都不同结果啊?

我说:怎么可能?不同的话,私要怎么解密和验证啊?

然后我屁颠屁颠的试了下,结果发现不论在在线RSA的还是自己公司 利用同一个明文加密,都会生成不同的秘文。   然后解密确是都能解出来。。。。

这个时候我就有点费解了 在自己的理解里面一般RSA不是:满足如下条件吗?

  1)、密文 = 明文^e mod n
  2)、明文 = 密文^d mod n
  3)、那么 publickKey = (e,n),privateKey = (d,n)

难道我真的记错了?

其实后来在网上查找了下 ,才发现其实这个算法是没错,只是我们的RSA在加密同一个数据过程中,加入了随机数处理(即加盐-salt),这样就导致每次需要加密的明文都是不同的,那么显然密文就每次都不同了。  那么解密后怎么会是同一个呢? 答案很简单,那就是 客户端和服务器端同样解随机数。 具体如下方案:

 1)、 密文 =( random+明文) ^e mod n  //publicKey  加密
 2)、(random+明文) = 密文^d mod n // 服务器端利用privateKey 解密 3)、 明文 = (random+明文) - random //服务器端解码出random
 4)、 明文和数据库中数据比较

感觉这哥们的解释:http://blog.csdn.net/guyongqiangx/article/details/74930951

时间: 2024-09-29 20:46:57

RSA 每次公钥加密不同结果的相关文章

openssl 非对称加密算法RSA命令详解

1.非对称加密算法概述 非对称加密算法也称公开密钥算法,其解决了对称加密算法密钥分配的问题,非对称加密算法基本特点如下: 1.加密密钥和解密密钥不同 2.密钥对中的一个密钥可以公开 3.根据公开密钥很难推算出私人密钥 根据非对称加密算法的特点,可用户数字签名.密钥交换.数据加密.但是由于非对称加密算法较对称加密算法加密速度慢很多,故最常用的用途是数字签名和密钥交换. 目前常用的非对称加密算法有RSA, DH和DSA三种,但并非都可以用于密钥交换和数字签名.而是RSA可用于数字签名和密钥交换,DH

Java & PHP & Javascript 通用 RSA 加密 解密 (长字符串)

系统与系统的数据交互中,有些敏感数据是不能直接明文传输的,所以在发送数据之前要进行加密,在接收到数据时进行解密处理:然而由于系统与系统之间的开发语言不同. 本次需求是生成二维码是通过java生成,由php来解密.基于这类需求所以选择了RSA进行加解密. 生成RSA公私钥分成三步生成RSA公私钥,第1.2步可以满足php的使用,由于java的私钥要转化为PKCS8格式才能使用,所以执行第3步来实现. 还有一种加密方式参考: DES ECB 模式 JAVA PHP C# 实现 加密 解密 兼容 .

AES,SHA1,DES,RSA,MD5区别

AES:更快,兼容设备,安全级别高: SHA1:公钥后处理回传 DES:本地数据,安全级别低 RSA:非对称加密,有公钥和私钥 MD5:防篡改 相关: 公开密钥加密(英语:public-key cryptography,又译为公开密钥加密),也称为非对称加密(asymmetric cryptography),一种密码学算法类型,在这种密码学方法中,需要一对密钥,一个是私人密钥,另一个则是公开密钥.这两个密钥是数学相关,用某用户密钥加密后所得的信息,只能用该用户的解密密钥才能解密.如果知道了其中一

RSA学习总结

一.RSA与公钥加密系统的起源与影响. 为了更好地突出公钥加密系统相对私钥加密系统的优势,让我们从这两个问题开始: 这个世界上如果没有公钥加密系统会怎么样呢?全用私钥加密系统会出现什么问题呢? 首先,私钥密码系统中的密码,加密解密之间是存在共享性的,也就是说,会加密就能做到会解密,会解密也就能做到会加密. 如果私钥密码系统用来做数字签名,会发生什么呢?你只要告诉了别人验证你的数字签名的正确性方法(解密),就同时告诉了他们伪造这个数字签名的方法(加密).瞬间爆炸Orz. 其次,私钥加密系统需要有一

我的Android进阶之旅------>Android采用AES+RSA的加密机制对http请求进行加密

前言 未加密的抓包截图 加密之后的抓包截图 基本需求及概念 AES算法 AES基本原理及算法流程 AES算法流程 RSA算法 RSA算法基本原理及流程 RSA算法实现流程 AES与RSA相结合数据加密方案 Android端 AESRSA结合实践 基本要求 基本流程 Android端 服务器端 java版示例 更多参考 前言 最近维护公司APP应用的登录模块,由于测试人员用Fiddler抓包工具抓取到了公司关于登录时候的明文登录信息.虽然使用的是HTTPS的方式进行http请求的,但还是被Fidd

AES,SHA1,DES,RSA,MD5区别[转]

AES:更快,兼容设备,安全级别高: SHA1:公钥后处理回传 DES:本地数据,安全级别低 RSA:非对称加密,有公钥和私钥 MD5:防篡改 相关: 公开密钥加密(英语:public-key cryptography,又译为公开密钥加密),也称为非对称加密(asymmetric cryptography),一种密码学算法类型,在这种密码学方法中,需要一对密钥,一个是私人密钥,另一个则是公开密钥.这两个密钥是数学相关,用某用户密钥加密后所得的信息,只能用该用户的解密密钥才能解密.如果知道了其中一

Java加密算法 RSA

Java加密算法 RSA 2015-06-06 08:44 511人阅读 评论(0) 收藏 举报  分类: JAVA(57)  公钥加密也称为非对称加密.速度慢.加密和解密的钥匙不相同,某一个人持有私钥,任何人都可以知道公钥 [java] view plaincopy package com.stone.security; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.securi

非对称加密算法之RSA介绍及OpenSSL中RSA常用函数使用举例

RSA算法,在1977年由Ron Rivest.Adi Shamirh和LenAdleman,在美国的麻省理工学院开发完成.这个算法的名字,来源于三位开发者的名字.RSA已经成为公钥数据加密标准. RSA属于公开密钥密码体制.公开密钥体制就是产生两把密钥,一把用于加密,一把用于解密,而且不能根据算法和其中的一把密钥,而去推出另外的一把密钥.在使用的时候,将公钥公开,对方用公开的公钥加密数据后,将密文发回,然后用另一把私钥进行解密,从而还原出明文. RSA算法的数学基础是数论中的素数相关性质.RS

怎么理解RSA算法

原文地址:http://www.ittenyear.com/414/rsa/ 能够把非对称加密算法里的公钥想象成一个带锁的箱子,把私钥想象成一把钥匙 能够把对称加密算法里的密钥想象成箱子和钥匙的组合 HTTPS使用了非对称加密和对称加密的组合:RSA和DES的组合就是,用DES把用户数据加密,然后把DES的密钥用RSA的公钥加密,这样用户数据和DES的密钥都是安全的,就像是把用户数据锁在了DES的箱子里,然后把DES的钥匙锁在了RSA的箱子里,而RSA的钥匙在server端保存着,所以在运送这两