rsa算法 c#语言,C#实现RSA算法加密解密、签名以及签名的验证

本文详细介绍了如何在C#中实现RSA加密、解密、签名以及签名验证。通过`RSACrypt`类,展示了加密、解密、签名和验签的具体方法,包括私钥和公钥的使用。示例代码展示了加密、解密、签名和验签的完整过程,以及如何生成和使用RSA密钥对。
摘要由CSDN通过智能技术生成

正 文:

我们来看在C#中如何实现RSA加密解密。直接上代码,如下类是RSA算法实现的加密,加解密,签名以及签名的验证。

我们封装了以下的这个RSA类:using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Security.Cryptography;

using System.IO;

namespace WebsiteXXX_Auth

{

/// 

/// 类名:RSACrypt

/// 功能:RSA加密、解密、签名、验签

/// 

public sealed class RSACrypt

{

/// 

/// 签名

/// 

/// 待签名字符串

/// 私钥

/// 编码格式

/// 签名后字符串

public static string sign(string content, string privateKey, string input_charset)

{

byte[] Data = Encoding.GetEncoding(input_charset).GetBytes(content);

RSACryptoServiceProvider rsa = DecodePemPrivateKey(privateKey);

SHA1 sh = new SHA1CryptoServiceProvider();

byte[] signData = rsa.SignData(Data, sh);

return Convert.ToBase64String(signData);

}

/// 

/// 验签

/// 

/// 待验签字符串

/// 签名

/// 公钥

/// 编码格式

/// true(通过),false(不通过)

public static bool verify(string content, string signedString, string publicKey, string input_charset)

{

bool result = false;

byte[] Data = Encoding.GetEncoding(input_charset).GetBytes(content);

byte[] data = Convert.FromBase64String(signedString);

RSAParameters paraPub = ConvertFromPublicKey(publicKey);

RSACryptoServiceProvider rsaPub = new RSACryptoServiceProvider();

rsaPub.ImportParameters(paraPub);

SHA1 sh = new SHA1CryptoServiceProvider();

result = rsaPub.VerifyData(Data, sh, data);

return result;

}

/// 

/// 加密

/// 

/// 需要加密的字符串

/// 公钥

/// 编码格式

/// 明文

public static string encryptData(string resData, string publicKey, string input_charset)

{

byte[] DataToEncrypt = Encoding.ASCII.GetBytes(resData);

string result = encrypt(DataToEncrypt, publicKey, input_charset);

return result;

}

/// 

/// 解密

/// 

/// 加密字符串

/// 私钥

/// 编码格式

/// 明文

public static string decryptData(string resData, string privateKey, string input_charset)

{

byte[] DataToDecrypt = Convert.FromBase64String(resData);

string result = "";

for (int j = 0; j 

{

byte[] buf = new byte[128];

for (int i = 0; i 

{

buf[i] = DataToDecrypt[i + 128 * j];

}

result += decrypt(buf, privateKey, input_charset);

}

return result;

}

private static string encrypt(byte[] data, string publicKey, string input_charset)

{

RSACryptoServiceProvider rsa = DecodePemPublicKey(publicKey);

SHA1 sh = new SHA1CryptoServiceProvider();

byte[] result = rsa.Encrypt(data, false);

return Convert.ToBase64String(result);

}

private static string decrypt(byte[] data, string privateKey, string input_charset)

{

string result = "";

RSACryptoServiceProvider rsa = DecodePemPrivateKey(privateKey);

SHA1 sh = new SHA1CryptoServiceProvider();

byte[] source = rsa.Decrypt(data, false);

ch

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值