`
windflyboy
  • 浏览: 3417 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
最近访客 更多访客>>
社区版块
存档分类

将军令算法杂谈

 
阅读更多

 将军令是一个动态加密key,需要时钟的支持。但key时钟允许有偏差,可以是±(5-15)具体看网络延迟 策划需求设定。

 

    参数1:序列号 -> 可以看做种子;

    参数2:时间 -> 动态密码的关键;

    参数3:hash和offset -> 本文中简单期间已写死,即“7”、“3”、“11”、"5" ,以及hash初始值。 此参数主要加大对key的破解难度。)

    参数4:时间偏差 -> 为了简单期间散列算法不涉及,主要为了修正用户电子时钟的偏移。

 

    算法:

    获得时间:

    =================================          

            unsigned long now = time(0); // 精确到秒

            now = now - (now % 86400 % 60); // 在一分钟内now的值不变

    =================================

    时间偏差算法:

    =================================          

            int time_offset  = 8; // 假定时间快8秒

            now = now - time_offset; 

    ================================= 

    接下来是重点散列算法:

    =================================

            unsigned long hash = 0L;

            unsigned int i = 0;

            const char *seed = "5890283734";

            while(*seed)

            {

                if(( i++ & 1) == 0) 

                {

                    // 偶数

                    hash ^= ((hash << 7) ^ (now  % *seed++) ^ (hash >> 3));

                }

                else

                {

                     // 奇数

                     hash ^= (~((hash << 11) ^ (now  % *seed++) ^ (hash >> 5)));

                }

            }

            // 0xF423F 是取值<=6位数 不满6位需要补零我这就不补了。

           return hash & 0xF423F;

    =================================

    未修正时钟程序运行结果:

    -----------------------------------------------------

        // 第一次

        now : 1361570520

        seed : 5890283734

        mkey : 524856

        // 第二次

        now : 1361570580

        seed : 5890283734

        mkey : 475704

    -----------------------------------------------------

 

    ps:上述散列算法,只是为了说明将军令的动态key的由来与原理,并不保证此算法和将军令算法一致。

    seed在此算法中的作用是保证相同时间戳内的不同的token不一样密码。

    now在此算法中的作用是保证每分钟的密码不同。

    此散列算法我并没有做碰撞测试。所以也不列概率问题。

    本文中的代码来自linux c++, makefile 编译。由于篇幅问题,没有贴出全部代码。若有转载请注明出处,欢迎有兴趣的大神留言讨论。

分享到:
评论

相关推荐

    C#源码 类似梦幻西游的将军令产生方法

    在IT行业中,尤其是在游戏开发和网络安全领域,"将军令"是一种常见的动态口令验证系统,类似于银行或在线服务中的一次性密码(OTP)机制。它确保了用户账户的安全,因为每次登录时都需要输入一个随时间变化的动态...

    类将军令原理实现程序

    3. **时间同步算法**:一种常见的实现方式是时间同步算法,系统和将军令设备内部都有一个精确的时钟,每30秒或60秒为一个周期,根据一个密钥和当前时间计算出一个一次性口令。 4. **哈希函数与密钥运算**:在计算...

    QQ安全中心VS网易将军令.pptx

    QQ安全中心VS网易将军令.pptx QQ安全中心和网易将军令是两款账号保护App,旨在保护用户的账号安全。下面是对这两款App的分析和比较: 账号保护技术 这两款App的核心功能是动态密码保护技术,每60秒生成一个新的...

    竞品分析报告QQ安全中心VS网易将军令.pptx

    【竞品分析报告QQ安全中心VS网易将军令】 在移动应用市场中,产品间的竞争日益激烈,特别是针对用户账号安全的工具。本报告对QQ安全中心与网易将军令这两款账号保护App进行了深入的竞品分析,以揭示它们的核心功能...

    音乐九年级上册第七单元《将军令》教案.docx

    这篇教案是针对九年级上册第七单元的音乐课程,主要教授中国传统扬琴曲目《将军令》。课程设计旨在让学生通过学习,掌握乐曲的创作背景、结构、演奏技巧以及艺术处理,同时提升他们感受、体验和理解音乐的能力,激发...

    使用C#开发的基于遗传算法和神经网络的人工智能象棋算法

    5. **游戏逻辑**:实现象棋的完整游戏逻辑,包括合法移动检查、将军检测、将军应对、吃子、将军解除等。 6. **集成与优化**:将遗传算法和神经网络结合起来,形成一个完整的决策系统。这可能需要不断调整算法参数,...

    幼儿园大班音乐活动教案:将军令.docx

    这个文档是关于幼儿园大班的音乐活动教案,主要围绕着《将军令》这首乐曲展开。教案的核心目标是通过音乐活动培养孩子们的团队合作精神和克服困难的能力。 1. **活动设计**:活动设计以《将军令》乐曲为背景,让...

    幕思城将军令-crx插件

    幕思城将军令是淘宝天猫卖家必备的数据分析工具,竞争对手分析,市场行情查词指数还原,直通车、标题优化,飙升词查询等多种功能。 专业的淘宝、天猫等电商平台卖家运营辅助工具,生意参谋、直通车等营销平台的指数...

    PBFT算法研究报告

    在拜占庭算法中,系统中忠诚的将军(正常工作的节点)必须能够忽略叛变将军(故障节点)的干扰,通过交流和投票来达成一致的决策。Leslie Lamport证明了,只有在忠诚将军的数量大于叛变将军数量的三倍以上(即N≥3f+...

    工控网络安全态势感知算法实现.pdf

    本文介绍了基于拜占庭将军问题的工控网络安全态势感知模型和算法。 一、工控网络安全态势感知模型 工控网络安全态势感知模型是指对工控系统的网络安全状况进行评估和判断的模型。该模型需要考虑多方面的因素,如...

    Python算法讲解剖析

    如果将最终写好运行的程序比作战场,我们码农便是指挥作战的将军,而我们所写的代 码便是士兵和武器。数据结构和算法则是兵法。我们可以不看兵法在战场上肉搏,如此,可 能会胜利,可能会失败。即使胜利,可能也会...

    music163-master_encryption_网易云加密算法_

    《音乐的旋律与技术的融合:解密网易云音乐加密算法》 在数字音乐时代,版权保护和用户隐私成为至关重要的问题。网易云音乐作为国内知名的音乐服务平台,为确保其内容的安全性和用户的隐私,采用了独特的加密算法来...

    Paxos算法.pdf

    - **可信环境**:Paxos算法的前提是没有拜占庭将军问题的存在,即系统中的节点都是可靠的,不会发生恶意行为。 - **节点故障**:Paxos算法考虑到了节点可能会出现故障的情况,如宕机或网络分区等。 ##### 2.3 基本...

    分布式算法导论 中文版

    接着,它将深入探讨分布式算法的设计原则和分析方法,如条件竞争、死锁避免、共识问题和拜占庭将军问题等经典案例。 在一致性方面,书中可能会涵盖Paxos协议和Raft算法,这些都是解决分布式系统中状态复制和一致性...

    java实现的棋盘算法

    这涉及到对棋盘数组的修改,以及可能的触发事件,如吃子、将军等。 4. **合法性检查**:在每一步操作前,都需要检查该移动是否符合游戏规则,包括但不限于自己的棋子能否移动到那个位置、是否会将自己的棋子置于...

    数据结构与算法高清

    正如文中所提到的,如果把编写好的程序比喻成战场,程序员就像是指挥战斗的将军,代码则如同士兵和武器。在这个比喻中,数据结构与算法则扮演着“兵法”的角色——它们提供了一套指导原则和方法论,帮助程序员更有效...

    一致性算法

    其中最著名的可能就是Paxos算法,由Leslie Lamport提出,它为解决拜占庭将军问题提供了一种解决方案。 Paxos算法分为多个阶段,包括提议、投票和决定等步骤,以确保在存在网络延迟或消息丢失的情况下,仍能达成一致...

    中国象棋游戏算法

    中国象棋游戏是一种深受中国人民喜爱的传统棋类游戏,它的算法实现是计算机科学与人工智能领域的一个经典实例。在本文中,我们将深入探讨中国象棋游戏的算法设计与实现,包括棋盘状态表示、棋子移动规则、游戏逻辑...

    拜占庭容错算法PBFT算法ppt

    该算法由Miguel Castro和Barbara Liskov于1999年提出,旨在解决拜占庭将军问题,即在存在恶意节点(如故障或欺诈行为)的情况下,确保网络中的节点能够达成一致的决策。 ### 1. 拜占庭问题与算法原理 拜占庭问题...

Global site tag (gtag.js) - Google Analytics