当前位置: 首页 > news >正文

网站建设毕业设计个人总结中企动力全球邮企业邮箱

网站建设毕业设计个人总结,中企动力全球邮企业邮箱,友情链接地址,新一站保险网问题为了安全性起见#xff0c;客户要求客户端必须将数据加密后才能传给服务端。起先#xff0c;准备使用非对称加密#xff08;RSA#xff09;方式#xff0c;但是发现它对原始文本长度有限制。而对称加密(AES)没有长度限制#xff0c;但是使用固定密钥存在暴露的风险。… 问题为了安全性起见客户要求客户端必须将数据加密后才能传给服务端。起先准备使用非对称加密RSA方式但是发现它对原始文本长度有限制。而对称加密(AES)没有长度限制但是使用固定密钥存在暴露的风险。有没有两全其美的办法呢思路密钥肯定每个用户不同而要验证用户则必须登录。因此唯一可以安全获取密钥的时机只能是在登录时。而为了保证用户名密码传输安全可以使用RSA公钥加密后传输所有客户端使用同一公钥也没问题。登录成功后服务端将生成token和AES密钥返回给客户端。但是返回的AES密钥是经过加密的而加密密钥则是“用户名密码”。这样保证了只有刚才成功登录的客户端才能解密出AES密钥。以后的传输全部使用AES加密服务端可以根据token从缓存获取AES密钥解密。整体流程如下图服务端实现下面是示例服务端的实现代码[HttpPost(Login)] public LoginOutput Login(LoginInput input) {var userName  RsaHelper.Decrypt(input.UserName, privateKey);var password  RsaHelper.Decrypt(input.Password, privateKey);(byte[] tmpKey, byte[] tmpIV)  AesHelper.CreateKeyIV(userName  password, password  userName);var token  Guid.NewGuid().ToString(N); (byte[] key, byte[] iv)  AesHelper.CreateKeyIV();_cache.Add(token, (key, iv));return new LoginOutput{Token  token,Key  AesHelper.Encrypt(Convert.ToBase64String(key), tmpKey, tmpIV),IV  AesHelper.Encrypt(Convert.ToBase64String(iv), tmpKey, tmpIV)}; }[HttpPost(TestMethod)] public string TestMethod([FromQuery]string token, [FromBody]string cipherText) {(byte[] key, byte[] iv)  _cache[token];return AesHelper.Decrypt(cipherText, key, iv); } Login用于验证用户密码并返回token和AES密钥.TestMethod用于演示接收客户端数据如何解密为了演示方便直接在URL传递token。客户端实现使用xunit测试项目演示客户端操作代码如下[Fact] public async void Test1() {//登录获得AES密钥var response  await _httpClient.PostAsync( /Demo/Login,JsonContent.Create(new WebApplication1.LoginInput{ UserName  RsaHelper.Encrypt(userName, publicKey),Password  RsaHelper.Encrypt(password, publicKey)}));var loginResult  await response.Content.ReadFromJsonAsyncWebApplication1.LoginOutput();(byte[] tmpKey, byte[] tmpIV)  AesHelper.CreateKeyIV(userName  password, password  userName);byte[] key Convert.FromBase64String(AesHelper.Decrypt(loginResult.Key, tmpKey, tmpIV));byte[] iv  Convert.FromBase64String(AesHelper.Decrypt(loginResult.IV, tmpKey, tmpIV));//使用AES密钥加密var cipherText  AesHelper.Encrypt(PlainText, key, iv);_output.WriteLine(cipherText);response  await _httpClient.PostAsync(/Demo/TestMethod?token  loginResult.Token,JsonContent.Create(cipherText));var decryptResult  await response.Content.ReadAsStringAsync();_output.WriteLine(decryptResult);Assert.Equal(PlainText, decryptResult); } 将大量数据千字文加密后传给服务。可以看到返回了正确的原始数据结论通过同时使用RSAAES保证了密钥和数据的安全性。如果你也碰到了类似需求不妨试试本文的实现方案。如果你觉得这篇文章对你有所启发请关注我的个人公众号”My IO“记住我
http://www.zqtcl.cn/news/528913/

相关文章:

  • 网站配置文件在哪里sns网站需求
  • 网站运营优化建议英国网站域名
  • 网站开发洲际企业网站模板论坛
  • 如何建外贸网站软件工程专业是干什么的
  • 衣联网和一起做网站 哪家强网站seo方案建设目标
  • 深圳企业股权优化网站程序代码优化
  • 中国石油大学网页设计与网站建设软件界面设计要求
  • 看网站有没有做404报名网站建设
  • 有哪些是做二手的网站关于网站制作的指标
  • 网站数据库是谁提供空间坐标系做图网站
  • 网站开发的外文文献佛山做网站格
  • 石家庄网站seo服务免费10大看盘软件
  • 自己做网站卖什么给个网站好人有好报2020免费
  • 网站源码安装步骤网站开发用c 语言
  • 网站首页是什么产品网络推广方案
  • 网站首页制作方案南通市规划建设局网站
  • 网站建设费用兴田德润团队西宁网站策划公司
  • 手机价格网站建设用别人备案域名做违法网站
  • 成都武侯区建设厅官方网站石家庄住房和城乡建设部网站
  • 前端做网站的步骤酉阳网站建设
  • 湖北省住房与建设厅网站php做网站访问记录
  • 做网站的公司没有技术吉林北京网站建设
  • 产品设计培训机构哪家好贵州整站优化seo平台
  • 天津网站制作推广wordpress 果酱
  • 写给初学网站开发们的一封信企业网站建设 ppt
  • 做装修网站多少钱做网站百度一下
  • 用asp做网站的可行性分析9免费建网站
  • 网站域名注册商查询徐州集团网站建设报价
  • 句容网站设计公司做网站充值犯法吗
  • 网站建设所用系统网站备案目的