全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 饭店股份转让合同协议
- 鲜肉制品销售合同协议
- 鲜花饼供货合同协议书
- 黑铁方管采购合同范本
- 国企设备安全规定
- 管内渣土清理合同范本
- 篮球训练招生合同协议
- 粮油种子销售合同范本
- 精装商铺转租合同范本
- 纱线委托代销合同范本
- GB/T 3920-2024纺织品色牢度试验耐摩擦色牢度
- 有趣课堂惩罚游戏(课件)-小学生主题班会
- 2024年度足球学校赞助与合作协议2篇
- 2024水电站输水发电系统运行安全评价导则
- 风电、光伏项目前期及建设手续办理流程汇编
- 广西壮族自治区南宁市青秀区 2024-2025学年九年级上学期11月期中道德与法治试题
- 内装修施工消防培训
- 胰岛素皮下注射标准解读
- 《分子生物学与基因工程》课程教学大纲
- 草果种质资源保护与利用
- DL∕T 1664-2016 电能计量装置现场检验规程
评论
0/150
提交评论