zoukankan      html  css  js  c++  java
  • 谈谈《Dotnet core结合jquery的前后端加密解密密码密文传输的实现》一文中后端解密失败的原因

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

    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传入公钥是可行的,前端可以获取到公钥进而加密,但是!每次你进入登录注册页面,生成的公钥都是不一样的,只有在你某次进入的登录注册页进行登录注册,才能解密成功,要不然会因为每次的公钥不一样,私钥也就不一样,因此就会解密失败。所以,这点是要注意的。

  • 相关阅读:
    DOCK-SWARM
    springMVC上传和下载文件
    生成任意内容任意类型的文件
    配置监听(系统启动和关闭时运行的程序)
    配置过滤器
    读取文件内容(TXT之类的文件)
    读取properties文件中的内容
    时间戳转时间字符串和时间
    启动Service的时候报错unable to install breakpoint in
    java后台调用接口并获取返回值
  • 原文地址:https://www.cnblogs.com/zhiyong-ITNote/p/9320032.html
Copyright © 2011-2022 走看看