using System; namespace Shared.Encryption { public class RSA { /// /// 用指定的密匙加密 /// /// 明文 /// 可以是RSACryptoServiceProvider生成的E /// 可以是RSACryptoServiceProvider生成的Modulus /// 返回密文 public static string EncryptString(string source, BigInteger e, BigInteger n) { int len = source.Length; int len1 = 0; int blockLen = 0; if ((len % 128) == 0) len1 = len / 128; else len1 = len / 128 + 1; string block = ""; var result = new System.Text.StringBuilder(); for (int i = 0; i < len1; i++) { if (len >= 128) blockLen = 128; else blockLen = len; block = source.Substring(i * 128, blockLen); byte[] oText = System.Text.Encoding.UTF8.GetBytes(block); var biText = new BigInteger(oText); var biEnText = biText.modPow(e, n); var temp = biEnText.ToHexString(); result.Append(temp).Append("@"); len -= blockLen; } return result.ToString().TrimEnd('@'); } } }