NCR Shuffle演算法原理

2021-04-07 09:12:06 字數 1580 閱讀 1635

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

……

…….

……..

AdaBoost演算法原理

每個haar特徵對應看乙個弱分類器,但並不是任伺乙個haar特徵都能較好的描述人臉灰度分布的某一特點,如何從大量的haar特徵中挑選出最優的haar特徵並製作成分類器用於人臉檢測,這是adaboost演算法訓練過程所要解決的關鍵問題。paul viola和michael jones於2001年將ad...

Chord演算法(原理)

chrod 演算法是p2p中的四大演算法之一,是有mit 麻省理工學院 於2001年提出,其他三大演算法分別是 chord的目的是提供一種能在p2p網路快速定位資源的的演算法,cord並不關心資源是如何儲存的,只是從演算法層面研究資源的取得,因此chord的api就簡單到只有乙個set get。ch...

EM演算法原理

在聚類中我們經常用到em演算法 i.e.estimation maximization 進行引數估計,在該演算法中我們通過函式的凹 凸性,在estimation和maximization兩步中迭代地進行引數估計,並保證可以演算法收斂,達到區域性最優解。ps 為了不在11.11這個吉祥的日子發blog...