NCR Shuffle算法原理
刘永胜    2006年于广州
NCR的Shuffle(混淆)算法,做ATM的很多都知道,并且都使用有封装好的现成接口,但是基本没有多少人知道其算法原理,所以将原理写在这,给需要的人提供些许帮助。
以下为举例。比如
要Shuffle的数据(J):0123456789 123456
参与Shuffle的Key(K):12345678
Basic Shuffle Key(L):19F2 C827 6AD0 839B
其中对于J/K/L的计算都是从后往前算的,即对于J是从6开始,最后到0;K是从8到1。
说明:下面的数字没有说明的,默认指10进制数字。
定义:m为int,初值为0
基本算法:
1、J的6与K的8相加,等于14,然后与m相加。此时m为初值0,仍然为14。
2、14除以10,得到除数为1,赋给m,此时m为1,余数为4。
3、将L的最后一位“B”由16进制转成10进制,则为11。用11和上面的4异或,得到15。15转为16进制为“F”,再和0X30相加,得到0X3F。将0X3F转成ASCII码,为“:”。
4、至此,Shuffle处理的最后一位完成。
5、接着是倒数第二位计算,过程与上面一样,唯一的区别是m是可能发生了变化的,为0或1。
6、等到算到第9位后,m值恒为0,因为K的长度只为8位。
计算过程见下表:
次数
计算过程
m
Basic Shuffle Key(L)
异或(余数和L)
输出(ASCII码)
1
6+8+0
1
B
4与B
3F(?)
2
5+7+1
1
9
3与9
3A(:)
3
4+6+1
1
3
1与3
32(2)
4
3+5+1
0
8
9与8
31(1)
5
2+4+0
0
0
6与0
36(6)
6
1+3+0
0
D
4与D
39(9)
7
2+9+0
1
A
1与A
3B(;)
8
1+8+1
1
6
0与6
36(6)
9
7+0+1
0
7
8与7
3F(?)
10
……
…….
……..

代码略。

NCR Shuffle算法原理相关推荐

  1. 随机排列实现 -shuffle算法

    随机排列实现 -shuffle算法 洗牌算法(shuffle):原理是,一个数A,随机选一个在这个数A之前的下标,将这个下标对应数字与A对换:之后不再考虑最后的这一个数: 类似于无放回的抽签问题: f ...

  2. 侏儒排序算法原理与Python实现

    算法原理:假设一个人沿列表从头到尾走,如果发现有相邻元素顺序不对的就交换一下,然后后退一步,否则继续往前走,当走到列表尾部时,所有元素就排好序了. import random def gnomeSor ...

  3. 论文|SDNE的算法原理、代码实现和在阿里凑单场景中的应用说明(附代码)

    1.概述 SDNE(Structural Deep Network Embedding)算法是发表在KDD-2016上的一篇文章,论文的下载地址为: https://www.kdd.org/kdd20 ...

  4. 深度学习分析--TextCNN算法原理及分类实现

    深度学习算法背景 人工智能发展历史 随着算力提高以及深度学习的应用,近几年算法发展很快 应用场景 计算机视觉 用于车牌识别和面部识别等的应用. 信息检索 用于诸如搜索引擎的应用 - 包括文本搜索和图像 ...

  5. 一文掌握语义分割PSPNet——证件照制作、抠图(算法原理、Pytorch实现)

    目录 一. 语义分割概述 二.  PSPNet语义分割原理和Pytorch实现 1. PSPNet算法原理 2. 环境配置 3.  训练数据集处理 4.数据预处理和加载 5. 模型构建 5. 训练 三 ...

  6. 【基础机器学习算法原理与实现】使用感知器算法LDA、最小二乘法LSM、Fisher线性判别分析与KNN算法实现鸢尾花数据集的二分类问题

    本文设计并实现了PerceptronLA.PseudoIA.LeastSM.LinearDA.KNN等五个算法类,以及DataProcessor的数据处理类.对感知器算法LDA.最小二乘法LSM的伪逆 ...

  7. 论文|SDNE的算法原理、代码实现和在阿里凑单场景中的应用说明

    1.概述 SDNE(Structural Deep Network Embedding)算法是发表在KDD-2016上的一篇文章,论文的下载地址为:https://www.kdd.org/kdd201 ...

  8. Spark Shuffle运行原理

    1.什么是spark shuffle? Shuffle中文意思就是"洗牌",在Spark中Shuffle的目的是为了保证每一个key所对应的value都会汇聚到同一个分区上去聚合和 ...

  9. 机器学习之朴素贝叶斯算法原理+Python实现

    朴素贝叶斯 1.简介 ​ 贝叶斯分类算法是统计学中的一种概率分类方法,朴素贝叶斯分类是贝叶斯分类中最简单的一种.其分类原理就是利用贝叶斯公式根据某特征的先验概率计算出其后验概率,然后选择具有最大后验概 ...

最新文章

  1. python开课吧官网_开课吧老师详解 学Python真的可以帮助提高办公效率吗
  2. EVT DVT PVT TP PP MP分别指哪个阶段
  3. servletConfig对象
  4. ASP.NET服务器应用程序不可用
  5. hmr webpack 不编译_webpack HMR未加载更改
  6. boost::proto::make_expr相关的测试程序
  7. 第一个极小的机器学习的应用
  8. C语言静态链表常用吗,C语言实现静态链表
  9. at指令 fpga_EM310模块的之_AT指令的熟悉,AT指令操作流程
  10. QT 控件增加双击事件
  11. SpringMVC中使用hibernate-validator的坑
  12. 投资学U09 资本资产定价模型 习题笔记
  13. RN 技术探索:Hermes Engine 初探
  14. 10 本 Linux PDF 书籍免费分享
  15. 还在羡慕微信/微博的图片处理?-android酷炫图片处理(下)
  16. TMOS系统之NATS 和 SNAT
  17. ORA-28000 帐户已被锁定问题处理
  18. 基于Ardupilot/PX4固件,APM/PIXhawk硬件的VTOL垂直起降固定翼软硬件参数调试(第二篇)软硬件参数调试
  19. 5个Linux常用的系统检测工具
  20. RPA学习天地:艺赛旗RPA培训产品解读(2021年7月)

热门文章

  1. 我的新博客地址https://xmmup.com
  2. 如何通过点击iPhone的背面拍摄屏幕截图
  3. Python安装超详细教程
  4. Unity(四十三):存档、文本文件读写
  5. 【BZOJ5314】【JSOI2018】—潜入行动(树形dp)
  6. HDU 6082 度度熊与邪恶大魔王(01背包)
  7. 获取图片某一点的rgb色值
  8. @数字信号处理实验1
  9. javaone_JavaOne 2015继续进行,Java将永远存在(……也许是长篇大论)
  10. 机器人行业的信息孤岛(2020)