RSA等非对称加密解密的问题

已知明文为123
用私钥加密123得到密文456
(不使用数据填充,每次加密相同的明文都会得到相同的密文)
使用公钥解密456会得到123
我的问题是
已知公钥和明文123能计算出私钥加密生产的密文456吗

3个回答

1、非对称公钥体制的两个用途:

(1)做加密使用,保障数据的机密性。采用公钥加密,私钥加密。只有私钥才能解密,所以保障了数据的机密性。

(2)做签名使用,进行身份认证。采用私钥加密,公钥解密。公钥公开,任何人都可以对数据进行签名验证,这时的私钥加密的数据只是作为一个
只有拥有私钥的人才能生成的认证符号,所以能够进行对拥有私钥的人进行身份认证。签名原理如图:
图片说明

你的这个问题一个是第二种情况,用作数字签名使用的。已知公钥和明文是不能计算出密文的,一般商用的密钥长度都要求达到1000比特才能保证
RSA密码的安全性,你举的例子太过简单,如果私钥过短,是可以使用穷举搜索攻击得出私钥,从而得到加密的密文的。假设我们在密钥长度达到安全性要求的前提下进行讨论,已知公钥和明文是不能计算出密文的。

2.RSA算法的理论基础
大数分解:两个大素数相乘在计算上是容易实现的,但将该乘积分解为两个大素数因子的计算量却相当巨大。
素数检测:素数检测就是判定一个给定的正整数是否为素数。

3.签名的过程:设计密钥,设计签名,验证签名
(1)设计密钥
1)随机产生两个不同的大素数p和q,计算n=p x q和ψ(n)=(p-1)(q-1);
2)随机选择数e,满足1<e<ψ(n),且gcd(e,ψ(n))=1(e和ψ(n)的最大公约数为1),那么公钥就是(e,n);
3)计算d,满足ed=1modψ(n),私钥就是d;
(2)设计签名
签名s=明文的d次方 mod n
(3)验证签名
取得发送方的公钥(e,n),明文=签名s的e次方 mod n;在将计算出来的明文和接收方收到的明文做对比,两者一致,说明签名有效。

4 RSA算法的安全性依赖于大数分解困难性。
原理:
假设在知道公钥(e,n)的条件下,我们能进行大数分解,即找到两个不同的大素数p和q,使得n=p x q,那么ψ(n)=(p-1)(q-1)可以计算出来,
那么由ed=1modψ(n),可以计算出私钥d;私钥d计算出来后,通过:密文s=明文的d次方 mod n可以计算出密文。

5 结论:在密钥长度达到安全性的条件下,大数分解具有困难性,因此RSA公钥体制是安全的。

基本不可能。。建议放弃这方面的研究。

RSA加密总共有A,B,C。A,B,C可以看做没关系,公钥为A+B,私钥为A+C。但是只有A+B或者A+C能加密得到密文,但没有任何办法得到成对的密钥

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
RSA非对称加密解密方法
package com.hcmony.date; import javax.crypto.Cipher; import java.io.UnsupportedEncodingException; import java.security.*; import java.security.interfaces.RSAPrivateKey; import java.security.interfac...
RSA非对称加密解密程序
本程序是用RSA算法编写的对照片进行加密
python实现RSA 非对称加密解密
在爬取网站信息的时候,经常会发现前端会对数据进行加密,其中就有RSA 这中加密. 概念 rsa是一种非常常见的非对称加密算法,rsa算法用到了一个公式: 谜文=明文EmodN 谜文=明文^E modN 谜文=明文EmodN 对明文进行E次方运算,再对N取模操作得到谜文.相信到这里读者的疑问都是E和N到底是什么?其实这里的E(encryption)和N(number)的组合就是公钥(字符串形式),也...
Java非对称加密解密(RSA)
非对称加密是公钥加密,私钥来解密.使用的是Bouncy Castle 是一种用于 Java 平台的开放源码的轻量级密码术包.
非对称RSA加密解密
RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。1987年7月首次在美国公布,当时他们三人都在麻省理工学院工作实习。RSA就是他们三人姓氏开头字母拼在一起组成的。 今天只有短的RSA钥匙才可能被强力方式解破。到2008年为止,世界上还没有任何可靠的攻击RS
python 实现rsa非对称加密解密
1.mac使用openssl生成rsa公私秘钥匙 (1)打开终端,进入到即将生成密钥文件的目录下,然后输入命令:openssl,进入OpenSSL命令行 (2)输入genrsa -out rsa_private_key.pem 2048生成私钥, (3)输入rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem生成公钥 2.r...
RSA非对称加密解密Delphi源码
RSA非对称加密解密Delphi源码,亲测XE10.2.3可用!RSA控件,内含密钥对生成,无须DLL!
AES对称和RSA非对称加密解密
AES对称和RSA非对称加密解密的java实现
RSA非对称加密解密的问题,不能获得明文!!!!
我用大数算法解密后得不到明文,请教大虾们!!!!rnrn环境:VS2010,NET4.0rn引用:using System.Security.Cryptography;rn using System.Numerics;rnrn[code=C#]rn public partial class FormRsaEncrypt : Formrn rn public FormRsaEncrypt()rn rn InitializeComponent();rn this.Text = "RSA 加密解密";rnrn textBoxEncrypt.ReadOnly = true;rn textBoxDecrypt.ReadOnly = true;rnrn RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();rn this.txbPrivateKey.Text = RSA.ToXmlString(true);rn this.txbPublicKey.Text = RSA.ToXmlString(false);rn RSA.Clear();rn rnrn private void buttonOK_Click(object sender, EventArgs e)rn rn //int TextLength = 128;rn byte[] encryptedData;rn byte[] decryptedData;rnrn tryrn rn RSACryptoServiceProvider RSA1 = new RSACryptoServiceProvider();rn RSA1.FromXmlString(this.txbPrivateKey.Text);rn RSAParameters RSAKeyInfo = RSA1.ExportParameters(true);rnrn //byte[] dataToEncrypt = GenerateBytes(TextLength);rn byte[] dataToEncrypt = Encoding.UTF8.GetBytes(this.textBoxInput.Text);rnrn encryptedData = RSAEncrypt(dataToEncrypt, RSAKeyInfo.Exponent, RSAKeyInfo.Modulus);rn int x = encryptedData.Length;rn this.textBoxEncrypt.Text = Convert.ToBase64String(encryptedData);rnrn decryptedData = RSADecrypt(encryptedData, RSAKeyInfo.D, RSAKeyInfo.Modulus);rn int y = decryptedData.Length;rn this.textBoxDecrypt.Text = Convert.ToBase64String(decryptedData);rn rn catch (Exception ex)rn rn MessageBox.Show(ex.Message);rn rn rnrn //***********************************************************************rn // RSA Encryptrn //***********************************************************************rn static public byte[] RSAEncrypt(byte[] dataToEncrypt, byte[] Exponent, byte[] Modulus)rn rn BigInteger original = new BigInteger(dataToEncrypt);rn BigInteger e = new BigInteger(Exponent);rn BigInteger n = new BigInteger(Modulus);rnrn BigInteger encrypted = BigInteger.ModPow(original, e, n);rn return encrypted.ToByteArray();rn rnrn //***********************************************************************rn // RSA Decryptrn //***********************************************************************rn static public byte[] RSADecrypt(byte[] encryptedData, byte[] D, byte[] Modulus)rn rn BigInteger encrypted = new BigInteger(encryptedData);rn BigInteger d = new BigInteger(D);rn BigInteger n = new BigInteger(Modulus);rnrn BigInteger decrypted = BigInteger.ModPow(encrypted, d, n);rnrn return decrypted.ToByteArray();rn rn rn[/code]
php实现openssl RSA非对称加密解密
今天跟第三方公司对接别人看了我写的文档当时文档写的是DES加密,然后我的一个回答都让我觉得对不起别人,我说了是AES加密,当时AES和RSA加解密的原理我不了解导致我也误解了别人,今天就特意去理解了一下,下面就看一下RSA非对称的加解密吧 首先先来说一下RSA和AES的区别吧 RSA 非对称加密,公钥加密,私钥解密,反之亦然。由于需要大数的乘幂求模等算法,运行速度慢,不易于硬件实现。 通常...
文件非对称加密解密工具(RSA).exe
本工具是用于golang编写的,用于rsa非对称加密技术实现的对字符串的加密解密工具,可以对文件进行加密解密(txt、docx、xls文档等)。对文档加密会对文档同目录下生成一个后缀名加.hh的文档。 操作说明: 一、对字符串加密: 1.首先要生成加密的密钥 2.输入要加密的字符串对其进行加密 3.解密也需要相应的privatekey密钥 二、对文件加解密: 1.生成并保存密钥 2.选择相应的publickey.pem进行加密 3.选择相应的privatekey.pem进行文档解密
非对称算法之一RSA加密解密的java demo
RSA加密算法,著名的非对称加密算法之一。
用CryptoAPI进行RSA非对称加密解密
如何得到生成公钥私钥?rn用公钥加密,私钥解密?rn谢谢~~
非对称加密解密
本课程课程内容突出实战。
RSA非对称加密算法
DH(Diffie-Hellman)秘钥交换算法 RSA 基于因子分解 ElGamal 基于离散对数 ECC(Elliptical Curve Cryptography)椭圆曲线加密
欧拉与RSA非对称加密算法
欧拉函数与RSA非对称加密算法
非对称加密算法之RSA算法实现
对称加密,非对称加密,公钥,私钥,RSA这些常常听到的,到底是怎么回事 有个同事问我公钥私钥到底为什么能互相解开,一时间竟然回答不上来,平时都只是知道怎么用,但很少去了解的更细,现在做个整理,记个笔记 非对称加密简述 公钥加密后的密文,只有私钥才能解密 简单来说,A和B要互相通信,A生成一个公钥和一个私钥, A将公钥传给B, 此时B将公钥和真正的数据M加密,生成密文是N, B再将N通...
典型的非对称加密算法 RSA
ps: RES算法仅仅需要一套秘钥既可以完成加密/解密算法,并且公钥的秘钥长度明显的小于私钥的秘钥长度,支持“公钥加密,私钥解密”和“私钥加密,公钥解密”这两项加密解密原则。 代码样例: package encrypt.util; import java.security.Key; import java.security.KeyFactory; import jav
CryptoPP:非对称加解密之RSA
CryptoPP:非对称加解密之RSA CryptoPP是一个强大的密码库,官网是https://www.cryptopp.com/。上面有比较详细的具体例子和说明文档,不过例子程序稍显片面,无法满足所有的应用场景,把这2天研究的一些加解密算法封装一下分享出来。 非对称加解密RSA一般会有一个密钥对,公钥加密私钥解密,或者私钥签名公钥认证。 密钥对的生成官网的例子程序已经很详细,本文的应用场景是后...
JAVA 非对称加密算法RSA
非对称加密算法 RSA过程 : 以甲乙双方为例   1、初始化密钥 构建密钥对,生成公钥、私钥保存到keymap中     KeyPairGenerator ---&amp;gt; KeyPair --&amp;gt; RSAPublicKey、RSAPrivateKey   2、甲方使用私钥加密, 加密后在用私钥对加密数据进行数据签名,然后发送给乙方     RSACoder.encryptByPriva...
golang非对称rsa加解密
package main import ( &quot;crypto/rand&quot; &quot;crypto/rsa&quot; &quot;crypto/x509&quot; &quot;encoding/base64&quot; &quot;encoding/pem&quot; &quot;errors&quot; &quot;flag&quot; &quot;fmt&quot; ) var de
Java非对称加密算法--RSA
非对称加密的特点是有两把钥匙,公钥和私钥。公钥加密只能私钥解密;私钥加密只能公钥解密。 在公开密钥密码体制中,加密密钥(即公开密钥)PK是公开信息,而解密密钥(即秘密密钥)SK是需要保密的。加密算法E和解密算法D也都是公开的。虽然解密密钥SK是由公开密钥PK决定的,但却不能根据PK计算出SK。 RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi
RSA非对称加解密
RSA加密算法的数字证书操作 最早以前的加密算法是对称加密 (1)甲方选择某一种加密规则,对信息进行加密; (2)乙方使用同一种规则,对信息进行解密。 最大弱点:甲方必须把加密规则告诉乙方,否则无法解密。保存和传递密钥,就成了最头疼的问题。 非对称加密算法 (1)乙方生成两把密钥(公钥和私钥)。公钥是公开的,任何人都可以获得,私钥则是保密的。   (2)甲方获取乙方的公钥,然后用它对
非对称加密算法的误解(RSA等算法)
其实公钥和私钥都可以用来加密或解密---只要能保证用A加密,就用B解密就行。至于A是公钥还是私钥,其实可以根据不同的用途而定。 公钥、私钥都可以加密,也都可以解密。其中:用公钥加密需要私钥解密,称为“加密”。由于私钥是不公开的,确保了内容的保密,没有私钥无法获得内容;用私钥加密需要公钥解密,称为“签名”。由于公钥是公开的,任何人都可以解密内容,但只能用发布者的公钥解密,验证了内容是该
非对称加密算法RSA工具
非对称加密算法RSA工具 import java.security.InvalidKeyException; import java.security.Key; import java.security.KeyFactory; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.secur...
非对称RSA加密
安卓RSA的非对称加密小demo,真对新手学习。
c# 非对称加密解密
自己编写的c# RSA 加密解密程序 还有数字签名!
rsa非对称加密算法例子
RSA加密算法-Java实现,随机生产秘钥对,由公钥对内容进行加密,私钥解密。
RSA非对称加密算法详解
加密技术加密技术是对信息进行编码和解码的技术,编码是把原来可读信息(又称明文)译成代码形式(又称密文),其逆过程就是解码(解密),加密技术的要点是加密算法,加密算法可以分为三类: 1. 对称加密 2. 非对称加密 3. 不可逆加密对称加密算法 加密过程: 将明文分成N个组,然后对各个组进行加密,形成各自的密文,最后把所有的分组密文进行合并,形成最终的密文。 优点: 算法公开、计算量小、加密
关于RSA的非对称加解密
我加密正确,解密出现问题,请问怎么解决?rn//读取本人的私钥rn PrivateKey privatekey=null;rn tryrn rn ObjectInputStream keyFile2=new ObjectInputStream(new FileInputStreamrn ("c:\\安全文件\\密钥\\非对称\\本人公私钥\\yhb.private"));rn privatekey=(PrivateKey)keyFile2.readObject();rn keyFile2.close();rn rn//生成CIPHERrnSecretKey deskey=null; rn tryrn Cipher rsacipher=Cipher.getInstance("RSA/ECB/PKCS1Padding");rn rsacipher.init(Cipher.DECRYPT_MODE,privatekey);//此行出错!!!!rn byte[] keybytes=rsacipher.doFinal(encodekeybytes);rn。。。。。。。。rn
非对称加密算法 RSA
非对称加密算法 RSA如何计算得到 N E D1 求 N2 求 L (在生成密钥对过程中使用)3 求 E4 求 D实例生成密钥对加密解密 74mod127^4 mod 1274mod12 很好算 但 7xmod12=87^x mod 12 = 87xmod12=8 ,xxx 如何求就比较复杂,特别是当是数字特别大时,求离散对数非常困难耗时。 RSA 加密就是利用的这点。 在 RSA 加密中,明...
RSA非对称加密算法的原理
RSA非对称加密算法的原理:p,qp,q为两个大素数,令n=p⋅qn = p·q ,则φ(n)=(p−1)(q−1)φ(n) = (p-1)(q-1)取正整数e,满足条件(φ(n),e)=1,1<e<φ(n), ( φ(n), e ) = 1, 1 < e < φ(n),则存在整数d为e的逆元,表达式为:ed≡1(modφ(n))ed\equiv 1( mod φ(n)) 即存在整数kk使得e⋅
非对称加密算法RSA整理
RSA算法实现类 没有的jar包可以到maven中央仓库找 package com.jx.tmall_demo.utils; import cn.hutool.core.codec.Base64; import javax.crypto.Cipher; import java.io.*; import java.security.*; import java.security.inter...
Java非对称加密算法RSA
流程分析:  甲方构建密钥对儿,将公钥公布给乙方,将私钥保留。 甲方使用私钥加密数据,然后用私钥对加密后的数据签名,发送给乙方签名以及加密后的数据;乙方使用公钥、签名来验证待解密数据是否有效,如果有效使用公钥对数据解密。 乙方使用公钥加密数据,向甲方发送经过加密后的数据;甲方获得加密数据,通过私钥解密。 package cn.tzz.java.crypto; import j...
非对称加密算法之RSA
一.概述   (1)非对称加密是通过两个密钥(公钥-私钥)来实现对数据的加密和解密的。   (2)RSA可以通过两种方式加解密:公钥加密私钥解密 和 私钥加密公钥解密。   (3)缺点:效率比较低,由于RSA 的分组长度太大,为保证安全性,使运算代价很高,较对称加密算法慢几个数量级 二.加解密过程简析   1.发送者使用私钥加密数据,接收者使用公钥解密数据。   2.发送者使用公钥
RSA非对称加解密实例
.NET , RSA非对称加解密源码。让初学者理解非对称加密逻辑。
RSA 非对称加解密
步骤1keystore的生成: keytool -genkeypair -alias cjmexPrivateKey -keypass 123456 -keyalg RSA -keysize 1024 -validity 365 -keystore  /home/app/vexchange-front/cjmex123.keystore -storepass 123456 -dname "CN=
RSA 非对称加密算法
RSA非对称加密算法的原理和实现。
Java常用非对称加密算法-RSA
RSA作为常用的非对称加密算法,用法基本就是首先生成公钥和私钥密钥对,然后用公钥加密私钥解密或者用私钥加密公钥解密。这里只写代码实现。import javax.crypto.Cipher; import java.security.*; import java.security.spec.PKCS8EncodedKeySpec; import java.security.spec.X509Enco...
加密解密(四)——非对称加密算法
非对称加密算法 DH RSA
相关热词 c#检测非法字符 c#双屏截图 c#中怎么关闭线程 c# 显示服务器上的图片 api嵌入窗口 c# c# 控制网页 c# encrypt c#微信网页版登录 c# login 居中 c# 考试软件