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...