演算法系列7《CVN》

2021-09-06 18:48:40 字數 1207 閱讀 6852

計算cvn時使用二個64位的驗證金鑰,keya和keyb。

1) 計算cvn 的資料來源包含: 主賬號(pan)、卡失效期和服務**,從左至右順序編排。

4123456789012345+8701+111

2) 將上述資料來源擴充套件成128 位二進位制資料(不足128 位右補二進位制0)。

41234567890123458701111+000000000

3) 將128 位二進位制資料分成兩個64 位的資料塊。最左邊的64 位為block1,最右邊的64 位為 block2。

keya=0123456789abcdef ,block1=4123456789012345

4) 使用keya 對block1 進行加密。

3des_enc(block1, keya, enca)

enca = b76addce71ccc6be

5) 將block1 的加密結果與block2 進行異或。使用keya 對異或結果進行加密。

block2=8701111000000000

encb=xor(block2, enca)

encb=306bccde71ccc6be

3des_enc(encb, keya, encc)

encc=bae6746f6de1f0e6

keyb=fedcba9876543210

6) 使用keyb 對加密結果進行解密。

3des_de(encc, keyb, encd)

encd = b262abcb9de99a63

7) 使用keya 對解密結果進行加密。

3des_enc(encd, keya, ence)

ence=8d5625fa78011a0c

8) 從左至右將加密結果中的數字(0-9)抽出,組成一組數字。

ccrsn=85625780110

9) 從左至右將加密結果中的字元(a-f)抽出,減10 後將餘數組成一組數字,排列在步驟(8) 的數字之後。

ccrsa=dfaac

ccrsa-10=35002//每一位分別減10

rst=85625780110 35002

10)步驟(9)的左邊第一組三位數即為cvn 值。

cvn=856

演算法系列7《CVN》

計算cvn時使用二個64位的驗證金鑰,keya和keyb。1 計算cvn 的資料來源包括 主賬號 pan 卡失效期和服務 從左至右順序編排。4123456789012345 8701 111 2 將上述資料來源擴充套件成128 位二進位制資料 不足128 位右補二進位制0 4123456789012...

每日演算法系列 7

建立三個指標,分別指著head前乙個結點pre,head,head後乙個結點next。初始化pre,使得pre先指著位於鍊錶頭部外部空間,設為null,next也設為null但並不存在指向者。首先先將next指向head.next,用於儲存head的下乙個結點,使得鍊錶轉向不會因為鍊錶斷裂而丟失he...

演算法系列7 堆排序

堆排序 是指利用堆這種資料結構所涉及的一種排序演算法。堆積是乙個近似完全二叉樹的結構,並同時滿足堆積的性質 即子節點的鍵值或索引總是大於或者小於它的父節點 時間複雜度平均為o nlog2n 最好為o nlog2n 最壞o nlog2n 空間複雜度為o 1 不穩定排序 d0 99 5,36 7,22 ...