本文主要是介绍银行卡磁道加密-1,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
域352磁道数据(Track 2 Data)
变量属性
B..24(LLVAR),1个字节的BCD格式长度值+用TRK加密的含第二磁道长度的第二磁道数据。
域描述
用户磁条卡上的第二磁道数据。
用法
它从第二磁道开始符(;)后的第一个字符读起,包括域的分隔符,但不包括结束符和LRC符。
外卡只读二磁道。
加密步骤:
将2磁道实际1字节BCD长度与2磁道BCD数据组合到一起(共计最多20字节);
如步骤(1)得到的数据长度不是8的倍数,则后补0x00达到8的倍数;
用TRK对步骤(2)的数据进行3DES加密,形成加密后的2磁道数据;
在步骤(3)的数据之前附上步骤(3)的数据长度,1字节BCD格式。
public String getEncryptedMagnetic(String str) {
str = str.length() + str;
while (str.length() < 48) {
str += "0";
}
byte[] bcdWlen = Util.toBCD(str);
System.err.println("----str-----" + str);
try {
byte[] des = api.calcDES((byte) I_ADK, bcdWlen, 1);
System.err.println("des---" + HEX.bytesToHex(des));
return HEX.bytesToHex(des);
} catch (Exception e) {
e.printStackTrace();
return str;
}
}
这篇关于银行卡磁道加密-1的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!