pin格式
ansi x9.8 format(帶主帳號資訊)
pin block 格式等於 pin 按位異或主帳號:
pin 格式:
byte 1 pin的長度
byte 2 – byte 3/4/5/6/7 4--12個pin(每個pin佔4個bit)
byte 4/5/6/7/8 – byte 8 filler 「f」 (每個「f「佔4個bit)
主帳號格式:
byte 1 — byte 2 0x0000
byte 3 — byte 8 12個主帳號
12位主帳號的取法:取主帳號的右12位(不包括最右邊的校驗位),不足12位左補「0x00」。
例如:明文 pin 123456,
設:磁卡上的主帳號為:123456789012345678
擷取下的主帳號為:678901234567 則
用於pin加密的主帳號為:0x00 0x00 0x67 0x89 0x01 0x23 0x45 0x67
則 pin block 為 0x06 0x12 0x34 0x56 0xff 0xff 0xff 0xff
異或 0x00 0x00 0x67 0x89 0x01 0x23 0x45 0x67
結果為 0x06 0x12 0x53 0xdf 0xfe 0xdc 0xba 0x98
設:磁卡上的主帳號為:1234567890123456
擷取下的主帳號為:456789012345
則用於pin加密的主帳號為:0x00 0x00 0x45 0x67 0x89 0x01 0x23 0x45
則 pin block 為 0x06 0x12 0x34 0x56 0xff 0xff 0xff 0xff
異或 0x00 0x00 0x45 0x67 0x89 0x01 0x23 0x45
結果為 0x06 0x12 0x71 0x31 0x76 0xfe 0xdc 0xba
? pin 加密解密
省中心(外圍系統)在傳送訊息給全國中心(省中心)之前,
應用本中心的pik對pin加密後發往全國中心(省中心)。
/*** getpinblock
* 標準ansi x9.8 format(帶主帳號資訊)的pin block計算
* pin block 格式等於 pin 按位異或 主帳號;
* @param pin string
* @param accno string
* @return byte
*/private byte process(string pin, string accno)
util.printhexstring("pinblock:", arrret);
return arrret;
}/**
* gethpin
* 對密碼進行轉換
* pin格式
* byte 1 pin的長度
* byte 2 – byte 3/4/5/6/7 4--12個pin(每個pin佔4個bit)
* byte 4/5/6/7/8 – byte 8 filler 「f」 (每個「f「佔4個bit)
* @param pin string
* @return byte
*/private byte gethpin(string pin)
/*** gethaccno
* 對帳號進行轉換
* byte 1 — byte 2 0x0000
* byte 3 — byte 8 12個主帳號
* 取主帳號的右12位(不包括最右邊的校驗位),不足12位左補「0x00」。
* @param accno string
* @return byte
*/private byte gethaccno(string accno)
byte encode = new byte[8];
encode[0] = (byte) 0x00;
encode[1] = (byte) 0x00;
encode[2] = (byte) util.unitebytes(arraccno[0], arraccno[1]);
encode[3] = (byte) util.unitebytes(arraccno[2], arraccno[3]);
encode[4] = (byte) util.unitebytes(arraccno[4], arraccno[5]);
encode[5] = (byte) util.unitebytes(arraccno[6], arraccno[7]);
encode[6] = (byte) util.unitebytes(arraccno[8], arraccno[9]);
encode[7] = (byte) util.unitebytes(arraccno[10], arraccno[11]);
util.printhexstring("encoded accno:", encode);
return encode;
}
銀聯pinBlock演算法的實現
偶然翻到之前寫的對於ansi x9.8標準獲取pinblock,發現可能之前比較倉促,並沒有對整個過程描述的比較清楚,特意重新整理了下實現,新增對應注釋以便於理解該過程。1.格式化pin ansi x9.8分為帶主賬號資訊與不帶主賬號資訊,如果不帶主賬號資訊那麼下面函式處理後返回的即為pinbloc...
使用Prediction演算法
prediction演算法使用 surprise 提供了許多built in演算法.所有演算法從algobase基類繼承,當使用一些關鍵的函式時 比如predict,fit 和 test 可以從prediction algorithms包文件中獲得所有可以使用的演算法的詳細資訊 每乙個演算法都是su...
使用基礎演算法,領略演算法魅力
js 利用sort進行排序 sort可以按照元素的字元編碼的順序進行排序,條件是此元素必須為字串。對於數字排序,定義規則是很重要的。比較函式 systemsort function array 氣泡排序 bubblesort function array return array 快速排序 注意地方...