RSA加密解密源码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography;
namespace MyRSA
{
public class MyRSA
{
private static string publicKey =
"<RSAKeyValue><Modulus>6CdsXgYOyya/yQH" +
"TO96dB3gEurM2UQDDVGrZoe6RcAVTxAqDDf5L" +
"wPycZwtNOx3Cfy44/D5Mj86koPew5soFIz9sx" +
"PAHRF5hcqJoG+q+UfUYTHYCsMH2cnqGVtnQiE" +
"/PMRMmY0RwEfMIo+TDpq3QyO03MaEsDGf13sP" +
"w9YRXiac=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>";
private static string privateKey =
"<RSAKeyValue><Modulus>6CdsXgYOyya/yQH" +
"TO96dB3gEurM2UQDDVGrZoe6RcAVTxAqDDf5L" +
"wPycZwtNOx3Cfy44/D5Mj86koPew5soFIz9sx" +
"PAHRF5hcqJoG+q+UfUYTHYCsMH2cnqGVtnQiE" +
"/PMRMmY0RwEfMIo+TDpq3QyO03MaEsDGf13sP" +
"w9YRXiac=</Modulus><Exponent>AQAB</Exponent>" +
"<P>/aoce2r6tonjzt1IQI6FM4ysR40j/gKvt4d" +
"L411pUop1Zg61KvCm990M4uN6K8R/DUvAQdrRd" +
"VgzvvAxXD7ESw==</P><Q>6kqclrEunX/fmOle" +
"VTxG4oEpXY4IJumXkLpylNR3vhlXf6ZF9obEpG" +
"lq0N7sX2HBxa7T2a0WznOAb0si8FuelQ==</Q>" +
"<DP>3XEvxB40GD5v/Rr4BENmzQW1MBFqpki6FU" +
"GrYiUd2My+iAW26nGDkUYMBdYHxUWYlIbYo6Te" +
"zc3d/oW40YqJ2Q==</DP><DQ>LK0XmQCmY/ArY" +
"gw2Kci5t51rluRrl4f5l+aFzO2K+9v3PGcndjA" +
"StUtIzBWGO1X3zktdKGgCLlIGDrLkMbM21Q==</DQ><InverseQ>" +
"GqC4Wwsk2fdvJ9dmgYlej8mTDBWg0Wm6aqb5kjn" +
"cWK6WUa6CfD+XxfewIIq26+4Etm2A8IAtRdwPl4" +
"aPjSfWdA==</InverseQ><D>a1qfsDMY8DSxB2D" +
"Cr7LX5rZHaZaqDXdO3GC01z8dHjI4dDVwOS5ZFZ" +
"s7MCN3yViPsoRLccnVWcLzOkSQF4lgKfTq3IH40" +
"H5N4gg41as9GbD0g9FC3n5IT4VlVxn9ZdW+WQry" +
"oHdbiIAiNpFKxL/DIEERur4sE1Jt9VdZsH24CJE=</D></RSAKeyValue>";
static public string Decrypt(string base64code)
{
try
{
//Create a UnicodeEncoder to convert between byte array and string.
UnicodeEncoding ByteConverter = new UnicodeEncoding();
//Create a new instance of RSACryptoServiceProvider to generate
//public and private key data.
RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
RSA.FromXmlString(privateKey);
byte[] encryptedData;
byte[] decryptedData;
encryptedData = Convert.FromBase64String(base64code);
//Pass the data to DECRYPT, the private key information
//(using RSACryptoServiceProvider.ExportParameters(true),
//and a boolean flag specifying no OAEP padding.
decryptedData = RSADecrypt(
encryptedData, RSA.ExportParameters(true), false);
//Display the decrypted plaintext to the console.
return ByteConverter.GetString(decryptedData);
}
catch (Exception exc)
{
//Exceptions.LogException(exc);
Console.WriteLine(exc.Message);
return "";
}
}
static public string Encrypt(string toEncryptString)
{
try
{
//Create a UnicodeEncoder to convert between byte array and string.
UnicodeEncoding ByteConverter = new UnicodeEncoding();
//Create byte arrays to hold original, encrypted, and decrypted data.
byte[] dataToEncrypt =
ByteConverter.GetBytes(toEncryptString);
byte[] encryptedData;
byte[] decryptedData;
//Create a new instance of RSACryptoServiceProvider to generate
//public and private key data.
RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
RSA.FromXmlString(privateKey);
//Pass the data to ENCRYPT, the public key information
//(using RSACryptoServiceProvider.ExportParameters(false),
//and a boolean flag specifying no OAEP padding.
encryptedData = RSAEncrypt(
dataToEncrypt, RSA.ExportParameters(false), false);
string base64code = Convert.ToBase64String(encryptedData);
return base64code;
}
catch (Exception exc)
{
//Catch this exception in case the encryption did
//not succeed.
//Exceptions.LogException(exc);
Console.WriteLine(exc.Message);
return "";
}
}
static private byte[] RSAEncrypt(
byte[] DataToEncrypt,
RSAParameters RSAKeyInfo,
bool DoOAEPPadding)
{
try
{
//Create a new instance of RSACryptoServiceProvider.
RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
//Import the RSA Key information. This only needs
//toinclude the public key information.
RSA.ImportParameters(RSAKeyInfo);
//Encrypt the passed byte array and specify OAEP padding.
//OAEP padding is only available on Microsoft Windows XP or
//later.
return RSA.Encrypt(DataToEncrypt, DoOAEPPadding);
}
//Catch and display a CryptographicException
//to the console.
catch (CryptographicException e)
{
//Exceptions.LogException(e);
Console.WriteLine(e.Message);
return null;
}
}
static private byte[] RSADecrypt(
byte[] DataToDecrypt,
RSAParameters RSAKeyInfo,
bool DoOAEPPadding)
{
try
{
//Create a new instance of RSACryptoServiceProvider.
RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
//Import the RSA Key information. This needs
//to include the private key information.
RSA.ImportParameters(RSAKeyInfo);
//Decrypt the passed byte array and specify OAEP padding.
//OAEP padding is only available on Microsoft Windows XP or
//later.
return RSA.Decrypt(DataToDecrypt, DoOAEPPadding);
}
//Catch and display a CryptographicException
//to the console.
catch (CryptographicException e)
{
//Exceptions.LogException(e);
Console.WriteLine(e.Message);
return null;
}
}
}
}
测试代码:
static void Main(string[] args)
{
string encodeString = MyRSA.Encrypt("1234567");
Console.WriteLine(encodeString);
string decode = MyRSA.Decrypt(encodeString);
Console.WriteLine(decode);
Console.ReadLine();
}
{
string encodeString = MyRSA.Encrypt("1234567");
Console.WriteLine(encodeString);
string decode = MyRSA.Decrypt(encodeString);
Console.WriteLine(decode);
Console.ReadLine();
}
相关推荐
**C# RSA加密解密详解** 在信息安全领域,加密技术是一种至关重要的手段,用于保护数据的隐私和安全性。RSA(Rivest-Shamir-Adleman)算法是一种非对称加密算法,广泛应用于网络通信、数据存储等领域。C#作为.NET...
总结一下,C#中实现RSA分段加解密的关键在于理解RSA加密的限制,以及如何有效地处理超过单次加密限制的数据。通过循环分块处理,可以确保任何大小的数据都能被安全地加密和解密。在编写相关代码时,需要注意正确处理...
C#中RSA加密算法详解 在C#程序中,RSA加密算法是一种广泛使用的公钥加密算法。 RSA加密算法于1977年由Ron Rivest、Adi Shamir和Len Adleman在美国麻省理工学院开发的。RSA取名来自开发他们三者的名字。RSA是目前最...
在JavaScript和C#之间实现RSA加密解密,需要解决两个主要问题:格式兼容性和前后端通信。 1. **格式兼容性**: 默认情况下,JavaScript和C#使用的RSA密钥格式不一致。C#中的RSA密钥通常存储为XML字符串或.NET的...
1. RSA加密与解密 — 使用公钥加密、私钥解密 public class RSATool { public string Encrypt(string strText, string strPublicKey) { RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); ...
C#中的加密解密是一个复杂而富有挑战的领域,开发者需要深入理解各种加密技术原理,并且能够合理选择和使用这些技术,以确保数据的安全性。随着计算机网络技术的不断发展,加密技术也在不断进步,因此开发者需要持续...
《基于AES和RSA的C#加密聊天工具详解》 在信息技术高速发展的今天,网络安全成为了一个至关重要的议题。本文将深入探讨一个局域网内的聊天工具,该工具在通信过程中采用了高级加密标准(AES)和公钥加密算法RSA,...
《C#编写的加密聊天程序详解》 C#是一种由微软公司推出的面向对象的编程语言,广泛应用于桌面应用开发、游戏开发以及Web服务等领域。在本文中,我们将深入探讨一个基于C#的加密聊天程序,它采用客户端/服务器(C/S...
此源码示例是关于如何在C#环境下利用.NET框架实现RSA私钥加密和公钥解密的过程。以下是对这个主题的详细阐述: 1. **RSA算法基础**: RSA是由Ron Rivest、Adi Shamir和Leonard Adleman三位科学家在1977年提出的一...
在本文中,我们将深入探讨RSA加密以及如何在Java和C#之间进行密钥转换,同时也会介绍Bouncy Castle Crypto APIs在这些操作中的作用。 **RSA加密原理** RSA是一种基于大整数因子分解困难性的公钥加密算法。由Ron ...
RSA是一种非对称加密算法,广泛应用于网络安全领域,如数据加密、数字签名等。...通过理解以上知识点,你可以顺利地将PKCS#8格式的RSA公私钥转换为C#可使用的XML格式,以便在.NET环境中进行加密和解密操作。
本文将深入探讨如何在ASP.NET环境中,使用C#语言实现RSA加密和解密。 **1. RSA算法基础** RSA算法基于大数因子分解的难题,由Ron Rivest、Adi Shamir和Leonard Adleman在1977年提出。它使用一对密钥,公钥用于加密...
DotnetCore.RSA 是一个基于 .NET Core 平台实现的 RSA 加密解密库。RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,广泛应用于网络安全、数据保护等领域。在 .NET Core 中,我们可以利用内置的 System....
2. C#中实现RSA加密解密的步骤和代码示例。 3. Java中对应的实现,可能包括使用Java Cryptography Extension(JCE)进行RSA操作。 4. 如何在C#和Java之间交换公钥和私钥,并确保它们的兼容性。 5. 实际的互通案例,...
RSA加密解密C#实现详解 在信息安全领域,RSA(Rivest-Shamir-Adleman)是一种广泛使用的非对称加密算法,它基于大数因子分解的困难性。这个项目的标题“RSA-Encryption-Decryption-C-Sharp-master_rsa_Sharp_”表明...