




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Rsa加密算法加密长度限制是117字节,下面展示的是不限制长度rsa改造方法包含的有加密解密 加密的内容与原类型比较是否所有值都相等以及一个单元测试public class RsaHelper public static string PubKey =” 自己用下面生成的”; /公钥 public static string PriKey =” 自己用下面生成的”; /私钥 public struct RsaKey public string PublicKey get; set; public string PrivateKey get; set; / / 创建公钥私钥 / / static public RsaKey GEN_Key() var rsa = new RSACryptoServiceProvider(); return new RsaKey() /写死加快执行速度 /PublicKey = rsa.ToXmlString(false), /生成公钥 自己生成填到上面 /PrivateKey = rsa.ToXmlString(true) /生成私钥 自己生成填到上面 ; / / 解密 / / 要解密的字符串 / 私钥 / public static string RsaDecrypt(string encryptedInput, string privateKey) if (string.IsNullOrEmpty(encryptedInput) return string.Empty; if (string.IsNullOrWhiteSpace(privateKey) throw new ArgumentException(Invalid Private Key); using (var rsaProvider = new RSACryptoServiceProvider() var inputBytes = Convert.FromBase64String(encryptedInput); rsaProvider.FromXmlString(privateKey); int bufferSize = rsaProvider.KeySize / 8; var buffer = new bytebufferSize; using (MemoryStream inputStream = new MemoryStream(inputBytes), outputStream = new MemoryStream() while (true) int readSize = inputStream.Read(buffer, 0, bufferSize); if (readSize = 0) break; var temp = new bytereadSize; Array.Copy(buffer, 0, temp, 0, readSize); var rawBytes = rsaProvider.Decrypt(temp, false); outputStream.Write(rawBytes, 0, rawBytes.Length); return Encoding.UTF8.GetString(outputStream.ToArray(); / / 加密 / / 要加密的字符串 / 公钥 / public static string RsaEncrypt(string rawInput, string publicKey) if (string.IsNullOrEmpty(rawInput) return string.Empty; if (string.IsNullOrWhiteSpace(publicKey) throw new ArgumentException(Invalid Public Key); using (var rsaProvider = new RSACryptoServiceProvider() var inputBytes = Encoding.UTF8.GetBytes(rawInput);/有含义的字符串转化为字节流 rsaProvider.FromXmlString(publicKey);/载入公钥 int bufferSize = (rsaProvider.KeySize / 8) - 11;/单块最大长度 var buffer = new bytebufferSize; using (MemoryStream inputStream = new MemoryStream(inputBytes), outputStream = new MemoryStream() while (true) /分段加密 int readSize = inputStream.Read(buffer, 0, bufferSize); if (readSize = 0) break; var temp = new bytereadSize; Array.Copy(buffer, 0, temp, 0, readSize); var encryptedBytes = rsaProvider.Encrypt(temp, false); outputStream.Write(encryptedBytes, 0, encryptedBytes.Length); return Convert.ToBase64String(outputStream.ToArray();/转化为字节流方便传输 / / 加密后的字符串反序列化成类和原类值比对 / / / / / public static bool Compare(T tOri, string strEncry) try var decryStr = RsaDecrypt(strEncry, PriKey); var flag = true; T tDecry = JsonConvert.DeserializeObject(decryStr); PropertyInfo propertyInfos1 = tOri.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance); foreach (var propertyInfo in propertyInfos1) var name = propertyInfo.Name; var val1 = propertyInfo.GetValue(tOri, null); var val2 = tDecry.GetType().GetProperty(name).GetValue(tDecry, null); if (val1.ToString() != val2.ToString() flag = false; break; return flag; catch (Exception) return false; 单元测试部分class TestClass public string sc get; set; public string no get; set; public string na get; set; TestMethod public void TestRsa() var testClass = new TestClass() sc = his51, no = 1, na = 管理员 ; /公钥加密 var encryptStr=RsaHelper.RsaEncrypt(JsonConvert.SerializeObject(testClass), RsaHelper.PubKey); /私钥解密 var decryptStr = RsaHelper.RsaDecrypt(encryptStr, RsaHelper.PriKey); /类值加密字符串校验 var flag = RsaHelper.Compare(testClass, encryptStr); Assert.IsTrue(flag); TestMe
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 家庭农场市场准入与竞争力提升路径
- 幼儿教师心理素质与情感教育能力的提升途径
- 促进钢铁产品多元化与高附加值发展
- 项目驱动教学法在工程力学课程中的实施策略
- 石油化工企业创新资源配置与市场竞争力提升机制
- 农产品冷链物流成本管控与效益提升策略
- 促进招标投标过程中的利益相关方协同机制
- 优化固定资产盘点数据采集与记录的准确性
- 工程力学教学中消防救援技能培养的实践路径
- 钢铁产业生产与管理信息化升级
- 十年(2016-2025)高考英语真题分类汇编:专题06 动词的时态、语态和主谓一致(全国)(解析版)
- 2025-2026学年广美版(2024)小学美术二年级上册(全册)教学设计(附目录P155)
- 2025贵州毕节市赫章县招聘城市社区工作者8人考试参考题库及答案解析
- 机械设计创新项目毕业报告模板
- 2025年辅警面试考试试题库目(答案+解析)
- 校长考试笔试试题及答案
- 2025年江苏保安员考试题库及答案
- 小学二年级综合实践活动课教学计划
- 中小学校长考试试题及答案
- 采矿技术员考试试题及答案
- 第4课 记录数据讲诀窍(教学设计)2024-2025学年四年级上册人教版信息技术
评论
0/150
提交评论