RSA由公钥求私钥

BUUCTF:

在这里插入图片描述
上代码:运行环境python3.x

e = 17
p = 473398607161
q = 4511491

N = (p-1)*(q-1)   #欧拉定理求f(N)

#求私钥
def private_key(N,e):
    k = 1
    if ((k * N + 1) % e) == 0:
        return (k * N + 1) // e
    k+=1

d = private_key(N,e)    
print(d)

得到flag:
125631357777427553

### 使用C#中的RSA算法生成公钥私钥 在C#中,可以通过`System.Security.Cryptography.RSA`类来创建RSA对象并生成一对公钥私钥。下面是一个简单的例子展示如何完成这一过程: ```csharp using System; using System.IO; using System.Security.Cryptography; public class RsaKeyGenerator { public static void GenerateKeys() { using (var rsa = new RSACryptoServiceProvider()) { // 创建一个新的实例 string publicKey = rsa.ToXmlString(false); // 获取公钥 string privateKey = rsa.ToXmlString(true); // 获取私钥 File.WriteAllText("PublicKey.xml", publicKey); File.WriteAllText("PrivateKey.xml", privateKey); Console.WriteLine("Public Key:\n{0}", publicKey); Console.WriteLine("\nPrivate Key:\n{0}", privateKey); } } } ``` 此代码片段展示了怎样利用`.ToXmlString()`方法保存密钥到文件[^1]。 对于更现代的应用程序开发环境,推荐使用`RSACng`替代`RSACryptoServiceProvider`以获得更好的性能和支持更多的功能特性。以下是采用`RSACng`的一个版本: ```csharp using System; using System.IO; using System.Security.Cryptography; public class ModernRsaKeyGenerator { public static void GenerateKeysWithCNG() { using (RSA rsa = RSA.Create()) { // 创建新的RSA对象 var parameters = rsa.ExportParameters(true); // 导出参数(含私钥) // 将导出的参数转换成XML字符串或其他格式存储 string publicKey = rsa.ToXmlString(false); string privateKey = rsa.ToXmlString(true); File.WriteAllText("ModernPublicKey.xml", publicKey); File.WriteAllText("ModernPrivateKey.xml", privateKey); Console.WriteLine("Public Key:\n{0}", publicKey); Console.WriteLine("\nPrivate Key:\n{0}", privateKey); } } } ``` 上述两种方式都可以有效地生成所需的公钥私钥对,并将其分别写入两个独立的文件中以便后续使用[^2]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值