.Net(C#) RSA分段加密和解密
//密钥为pem格式 public class EncryptUtils { private const int _maxEncryptSize = 117; private const int _maxDecryptSize = 256; public static string RSAEncrypt(string publicKey, string bizContent) { //此处请根据需要设置集合capacity,也可不指定 var encryptedData = new List<byte>(45000); using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider()) { rsa.ImportFromPem(publicKey); int start = 0; var bytes = Encoding.UTF8.GetBytes(bizContent).AsSpan(); while (start < bytes.Length) { var buffer = bytes.Length - start <= _maxEncryptSize ? bytes.Slice(start).ToArray() : bytes.Slice(start, _maxEncryptSize).ToArray(); encryptedData.AddRange(rsa.Encrypt(buffer, false)); start += _maxEncryptSize; }; } return Convert.ToBase64String(encryptedData.ToArray()); } public static string RSADecrypt(string privateKey, string bizContent) { //此处请根据需要设置集合capacity,也可不指定 var encryptedData = new List<byte>(45000); using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider()) { rsa.ImportFromPem(privateKey); int start = 0; var bytes = Convert.FromBase64String(bizContent).AsSpan(); while (start < bytes.Length) { var buffer = bytes.Length - start <= _maxDecryptSize ? bytes.Slice(start).ToArray() : bytes.Slice(start, _maxDecryptSize).ToArray(); encryptedData.AddRange(rsa.Decrypt(buffer, false)); start += _maxDecryptSize; }; } return Encoding.UTF8.GetString(encryptedData.ToArray()); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器