PinBlock PinBuffer的計算方法

2021-10-21 02:25:48 字數 2041 閱讀 3472

我們在使用atm進行交易的過程中需要輸入個人密碼pin,而pin是非常重要的使用者資料,因此pin並不直接儲存在應用層,而是通過加密鍵盤進行儲存,應用無法直接獲取明文密碼,加密鍵盤也會進行特殊處理,一旦被拆解會進行金鑰銷毀。那麼atm的控制端atmc如何與銀行主機驗密呢?答案就是通過pin與賬號pan進行運算得出明文pinblock,然後再用銀行主機下發的金鑰進行加密。

主金鑰masterkey:一般也稱為a key,tmk(terminal master key), lmk(local master key),顧名思義,是終端主金鑰,用來加密其它金鑰,例如pinkey。通常為銀行手動輸入或rkl遠端下發。

工作金鑰pinkey:持卡人密碼的加密傳輸,主機會下發金鑰報文,需要使用masterkey解密得到原始的pinkey。

masterkey和pinkey都會儲存在加密鍵盤中,通過xfs工具獲取kcv(key check value,也叫kvv,cvv)來判斷是否輸入正確。

計算pinblock分為三部分:1.計算masterkey 2.計算pinkey 3.計算pinblock

masterkey分為a b兩部分,每部分由32位hex組成。如:

part a:d045a1431ab0d35d1c8fc8fba1dcfb10

part b:5b155e08a8208cd5852c259d49d95e0d

1. 通過異或得到masterkey

d045a1431ab0d35d1c8fc8fba1dcfb10 xor 5b155e08a8208cd5852c259d49d95e0d => 8b50ff4bb2905f8899a3ed66e805a51d

2. masterkey與32位0的3des加密得到masterkey的kvv,與銀行給的kvv進行對比看是否有無

8b50ff4bb2905f8899a3ed66e805a51d trides加密 00000000000000000000000000000000 => fb1ffef37fa41991fb1ffef37fa41991

假設銀行主機下發的pinkey密文為 7696f26bb074f23fb4e164ed74cf2c4b

1. 使用masterkey對pinkey密文進行3des解密

8b50ff4bb2905f8899a3ed66e805a51d trides解密 7696f26bb074f23fb4e164ed74cf2c4b => 7afb38eadfaba7139b13a43e616dc8e3

2. 解密後的pinkey與32位0進行3des加密得到pinkey的kcv

7afb38eadfaba7139b13a43e616dc8e3 trides加密 00000000000000000000000000000000 => 7f509dbd79c030607f509dbd79c03060

假設pin為 647270,賬號pan為5471520000000022

按照ansi x9.8/iso9564-1 format0標準填充:

pin: 06647270ffffffff (0+長度+pin+填充f,共16位)

pan: 0000152000000002 (0000+去除最後一位校驗位的最右12位pan)

1. 明文pinblock通過pan異或pan獲得

06647270ffffffff xor 0000152000000002 => 06646750fffffffd

2. 密文pinblock通過使用pinkey對明文3des加密得到

7afb38eadfaba7139b13a43e616dc8e3 trides加密 06646750fffffffd => 466116065d78df98

3. 應用層中若使用到pinbuffer,則進行轉換,規則簡單總結就是 +30找對應的ascii碼

466116065d78df98 => 466116065=78=?98

mysql 記憶體計算 mysql 記憶體的計算方法

使用tuning primer 分析mysql 看了 後對記憶體的分配有了一些了解,分享一下 實際記憶體使用主要分為幾部分 1 全域性buffer global buffer 包括 innodb buffer pool size innodb additional mem pool size inn...

decision tree的結點純度計算方法

決策樹是一種機器學習領域的分類方法,首先通過訓練集來構建決策樹,並在測試集上使用決策樹對測試資料進行分類。本文主要講解對各結點的純度計算方法。要確定決策樹的根結點,要對不同屬性進行純度計算。主要有兩種計算方法。公式 例如,某一屬性按照c1,c2兩類的分類情況如下 c10 c2對於這種情況,使用上述公...

矩陣方冪快速計算

description 設a是乙個n n的矩陣,很多時候人們需要計算乙個矩陣的n次冪,當n足夠大時,計算量會變得很大,時間會變得很長,程式設計快速計算a n。input matirx a output matrix b a n。演算法描述 設a 是乙個n n的矩陣,輸入n,該演算法可以實現快速計算a...