最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

jQuery+C#实现参数RSA加密传输功能技巧分享

来源:动视网 责编:小采 时间:2020-11-27 20:07:13
文档

jQuery+C#实现参数RSA加密传输功能技巧分享

jQuery+C#实现参数RSA加密传输功能技巧分享:本文主要介绍了jQuery+C#实现参数RSA加密传输功能,结合具体实例形式分析了js使用jsencrypt.js插件前端字符数据处理传输及C#后台数据转换与RSA加密相关操作技巧,并附带jsencrypt.js供读者下载参考使用,需要的朋友可以参考下,希望能帮助到大家。本文实例讲述了
推荐度:
导读jQuery+C#实现参数RSA加密传输功能技巧分享:本文主要介绍了jQuery+C#实现参数RSA加密传输功能,结合具体实例形式分析了js使用jsencrypt.js插件前端字符数据处理传输及C#后台数据转换与RSA加密相关操作技巧,并附带jsencrypt.js供读者下载参考使用,需要的朋友可以参考下,希望能帮助到大家。本文实例讲述了

本文主要介绍了jQuery+C#实现参数RSA加密传输功能,结合具体实例形式分析了js使用jsencrypt.js插件前端字符数据处理传输及C#后台数据转换与RSA加密相关操作技巧,并附带jsencrypt.js供读者下载参考使用,需要的朋友可以参考下,希望能帮助到大家。

本文实例讲述了jQuery+C#实现参数RSA加密传输功能。分享给大家供大家参考,具体如下:

注意:

参数传递的+号处理,在传输时会把+变成空格,不处理后端就报错了。

1、前端代码

2、后端代码

public class IndexController : Controller
{
 public ActionResult Login()
 {
 return View();
 }
 [HttpPost]
 public ActionResult Login(string pwd)
 {
 //密钥格式要生成pkcs#1格式的 而不是pkcs#8格式的
 string privateKey = @"MIICWwIBAAKBgQCa4KHNwDX44gGmmIAtRu4gjVYtGWZzcm4t+1wjUD4dn7fMLPvuK7ai4UrfDeEJE1RPwudJw+lJ6crql8wSIg7/DbTlG3ihsCT6dT9H5B9OoeR7K9VW
UesaW/iyVL6HXiYOANabW14pvJATDmdq91Tfgp6PSQyvdfiRdV4r07crpQIDAQAB
AoGABb+3gdb+qeG0b1CogVsT/7//UOaTzPk/FGneKQQTf4SsN+H7lVhTYTG9ARFC
JyoWg8IXqmn2ljhywHPTWWD2RCZIn2sYT1sVkGb70EgHGQLBraFHElmw+DsVJ+nD
fBCfMrJ1TYXlwigjRkaueaoGgG8LdR8XD+Xs5LersPLjZgECQQCguSB7C4wF6oSw
EDmwNF8ffT5cQc1U2OIq6NBG8rafrjb7LsjhOd03pmY7i4LbW3Vvq4AhQpJEdF1C
vd+Sk/BBAkEA9rBhqnyumV09zFEomSX3zZu+bdhTzM4bJDfEa95swp1gANCVvF/t
DCnlBf51EhCWdeGSpARPUkQnXrYfFUDiZQJAAZEshuaa6+fYeVr/JP+tucHf3Mhr
dxtSQTbZ6QcuzqnFMXfIT6HfzU4bCxOWKAthPsB+VFSw1mgIDMGLL4OvwQJAJlVy
V9PYLezXVZCnBmVoBINXLCqZmxHMFey0kS6XKAbcjEPdgNBHPcSk2jGYb540Q00y
RFqHGPmORKF4Yw0aIQJAd5JRtD3z2MgP/vPoKHJNHqY8bboVcmwqVAm6xCZoTCZz
jNV1Cnsdf4wBV3LCDzYBy+xR4qYNUy5CFXN+8WzzAA==";
 try
 {
 RSACryptoServiceProvider rsaCryptoServiceProvider = CreateRsaProviderFromPrivateKey(privateKey);
 //把+号,再替换回来
 byte[] res = rsaCryptoServiceProvider.Decrypt(Convert.FromBase64String(pwd.Replace("%2B","+")), false);
 return Content(Encoding.UTF8.GetString(res));
 }
 catch (Exception exception)
 {
 }
 return Content("");
 }
 private RSACryptoServiceProvider CreateRsaProviderFromPrivateKey(string privateKey)
 {
 var privateKeyBits = System.Convert.FromBase64String(privateKey);
 var RSA = new RSACryptoServiceProvider();
 var RSAparams = new RSAParameters();
 using (BinaryReader binr = new BinaryReader(new MemoryStream(privateKeyBits)))
 {
 byte bt = 0;
 ushort twobytes = 0;
 twobytes = binr.ReadUInt16();
 if (twobytes == 0x8130)
 binr.ReadByte();
 else if (twobytes == 0x8230)
 binr.ReadInt16();
 else
 throw new Exception("Unexpected value read binr.ReadUInt16()");
 twobytes = binr.ReadUInt16();
 if (twobytes != 0x0102)
 throw new Exception("Unexpected version");
 bt = binr.ReadByte();
 if (bt != 0x00)
 throw new Exception("Unexpected value read binr.ReadByte()");
 RSAparams.Modulus = binr.ReadBytes(GetIntegerSize(binr));
 RSAparams.Exponent = binr.ReadBytes(GetIntegerSize(binr));
 RSAparams.D = binr.ReadBytes(GetIntegerSize(binr));
 RSAparams.P = binr.ReadBytes(GetIntegerSize(binr));
 RSAparams.Q = binr.ReadBytes(GetIntegerSize(binr));
 RSAparams.DP = binr.ReadBytes(GetIntegerSize(binr));
 RSAparams.DQ = binr.ReadBytes(GetIntegerSize(binr));
 RSAparams.InverseQ = binr.ReadBytes(GetIntegerSize(binr));
 }
 RSA.ImportParameters(RSAparams);
 return RSA;
 }
 private int GetIntegerSize(BinaryReader binr)
 {
 byte bt = 0;
 byte lowbyte = 0x00;
 byte highbyte = 0x00;
 int count = 0;
 bt = binr.ReadByte();
 if (bt != 0x02)
 return 0;
 bt = binr.ReadByte();
 if (bt == 0x81)
 count = binr.ReadByte();
 else
 if (bt == 0x82)
 {
 highbyte = binr.ReadByte();
 lowbyte = binr.ReadByte();
 byte[] modint = { lowbyte, highbyte, 0x00, 0x00 };
 count = BitConverter.ToInt32(modint, 0);
 }
 else
 {
 count = bt;
 }
 while (binr.ReadByte() == 0x00)
 {
 count -= 1;
 }
 binr.BaseStream.Seek(-1, SeekOrigin.Current);
 return count;
 }
}

文档

jQuery+C#实现参数RSA加密传输功能技巧分享

jQuery+C#实现参数RSA加密传输功能技巧分享:本文主要介绍了jQuery+C#实现参数RSA加密传输功能,结合具体实例形式分析了js使用jsencrypt.js插件前端字符数据处理传输及C#后台数据转换与RSA加密相关操作技巧,并附带jsencrypt.js供读者下载参考使用,需要的朋友可以参考下,希望能帮助到大家。本文实例讲述了
推荐度:
标签: 加密 技巧 参数
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top