前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >谈谈《Dotnet core结合jquery的前后端加密解密密码密文传输的实现》一文中后端解密失败的原因

谈谈《Dotnet core结合jquery的前后端加密解密密码密文传输的实现》一文中后端解密失败的原因

作者头像
Ryan_OVO
发布2023-10-19 19:25:32
1210
发布2023-10-19 19:25:32
举报
文章被收录于专栏:程序随笔程序随笔

详情请看《Dotnet core结合jquery的前后端加密解密密码密文传输的实现》,正常来讲,这个博客里面的代码是没有问题的,但是我有时候却会直接报错,原因是后台解密失败:Internal.Cryptography.CryptoThrowHelper.WindowsCryptographicException 我一开始想,是不是因为前端jquery传过来的秘钥里面有了空格,于是加了trim,但有时候还是不行,继续分析。我发现,解密失败只会出现在我用VS生成了项目之后(默认页面是登录页面),没有立即登录,然后我又重新生成了项目,此时开了调试模式,然后我再之前的页面进行登录就会报错。我后来一想是不是跟秘钥有关?看了下代码,一分析还真是:

代码语言:javascript
复制
public class ProcessViewResultAttribute : ActionFilterAttribute
{
public override void OnResultExecuting(ResultExecutingContext context)
{
//rsa public key
var controller = (context.Controller as Controller);
controller.ViewBag.PublicExponent = RSAUtil.PublicPars.PublicExponent;
controller.ViewBag.PublicModulus = RSAUtil.PublicPars.PublicModulus;

base.OnResultExecuting(context);
}
}

ActionFilterAttribute里面所有的过滤器方法都是在前端razor页面出现之前执行完成的,因此,在OnResultExecuting中给ViewBag传入公钥是可行的,前端可以获取到公钥进而加密,但是!每次你进入登录注册页面,生成的公钥都是不一样的,只有在你某次进入的登录注册页进行登录注册,才能解密成功,要不然会因为每次的公钥不一样,私钥也就不一样,因此就会解密失败。所以,这点是要注意的。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-07-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档