.NET中使用BouncyCastle动态库实现RSA方式加密方法

最近要用.NET的技术和C++写的后台联写一个RSA加密解密程序。

具体是.NET里面实现加密,C++里面解密, 要求将字符串加密成64个字节,并且每个字节转成16进制,一共128位的16进制的字符串

.NET中实现RSA加密我使用了java中使用的一个动态库BouncyCastle.Crypto.dll,可以到网站http://www.bouncycastle.org/csharp/ 上下载此动态库,

将dll添加到.net项目引用中。

使用下面这些命名空间:


using Org.BouncyCastle.OpenSsl;
using Org.BouncyCastle.Asn1;
using Org.BouncyCastle.Asn1.Nist;
using Org.BouncyCastle.Asn1.Oiw;
using Org.BouncyCastle.Asn1.Pkcs;
using Org.BouncyCastle.Asn1.TeleTrust;
using Org.BouncyCastle.Asn1.X509;
using Org.BouncyCastle.Crypto;
using Org.BouncyCastle.Crypto.Parameters;
using Org.BouncyCastle.Math;
using Org.BouncyCastle.Security;
using Org.BouncyCastle.Utilities;
using Org.BouncyCastle.Utilities.Encoders;

 

公钥文件存放在 C:\Users\dell\Desktop\pub.txt 文本中

加密方法:

public string RSAEncrypt(string source)  // source为要加密的字符串
        {
            PemReader r = new PemReader(new StreamReader(@"C:\Users\dell\Desktop\pub.txt"));     //载入公钥
            Object readObject = r.ReadObject();
            AsymmetricKeyParameter pubKey = (AsymmetricKeyParameter)readObject;
            IBufferedCipher c = CipherUtilities.GetCipher("RSA/ECB/PKCS1Padding");      // 参数与C++中解密的参数一致
            c.Init(true, pubKey);
            byte[] DataToEncrypt = Encoding.Default.GetBytes(source);
            byte[] outBytes = c.DoFinal(DataToEncrypt);
            string hex = bytesToHexString(outBytes);
            return hex;
        }

 public  String bytesToHexString(byte[] src)    //方法将byte数组转成16进制的字符串
        {
            StringBuilder stringBuilder = new StringBuilder();
            if (src == null || src.Length <= 0)
            {
                return null;
            }
            for (int i = 0; i < src.Length; i++)
            {
                stringBuilder.Append(src[i].ToString("X2"));
            }
            return stringBuilder.ToString();
        }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值