zoukankan      html  css  js  c++  java
  • 中国银行的动态口令

    今天看到我们财务拿着一个类似U盘的东西,但没有插头,另外看到上面有一个电子屏,显示一串六位数字,问她是什么,她说是银行的口令卡,并且她说每隔一定时间会变!

    于是想了一下,如果要实现这样的效果,应该有以下方面的因素

    一是时间,估计是一分钟变一次,那就肯定是跟分钟有关

    二是用户的随机密钥,这个密钥应该是在用户开卡(或是开动态口令卡)的时候创建的。

    举个最简单的例子:

                DateTime dt = DateTime.Now;
                int t = dt.Year + dt.Month + dt.Day + dt.Hour + dt.Minute;  
    
                int rndkey = 100000; //用户随机密钥
    
                string key = (t + rndkey).ToString(); 
    
                Console.WriteLine(key.Substring(key.Length - 6, 6)); 打印末6位
    

    加密算法是猜不出来了,但大致就这样

    这种方法我在我的程序中用过,不过有个麻烦的地方,平均2到3天的机率会发生一次错误,就是当时间出现整分时的问题

    比如现在是14:15:58秒,当在系统中输入显示的口令时,可能时间已经到了14:16:01,这时算出来的结果是不同的,口令也就失效了,那时我是用程序访问的,都会存在这个问题,如果中间还用了一个人去手工输入,这里的机率可能就更高了。

    中银的人可能也发现了这个问题,所以在显示屏上做了另一点提示,一块类似手机电量指示的东西,如果只剩一格了,就表示这个口令马上要过期了,使用人员就要等几秒钟,等它换了再登陆。

    说到最后,还是觉得这些东西对安全的提升度并不太明显,换个角度来说,因为现在的银行只支持IE,最主要的就是因为使用了ActiveX,如果是这样,直接在密码框做点手脚就行了!而且也不环保,如果银行要升级了,还得要换N多用户手上的这些口令卡,浪费!最重要的就是害了我们这些程序员,一个华而不实的东西,让客户以为很好,非要偶们做一样的东西,寒!!!

  • 相关阅读:
    Oracle 创建表并设置主键自增
    Oracle 基本知识回顾
    关于JAVAweb的一些东西
    JAVA获取运行环境的信息
    关于正则表达式的一些东西
    关于jQuery的一些东西
    关于JS的一些东西
    thymeleaf 的使用
    小程序flex容器
    Vue组件化
  • 原文地址:https://www.cnblogs.com/szyicol/p/1881012.html
Copyright © 2011-2022 走看看