我正在开发万事达卡交易处理应用程序,但仍处于开发阶段。为了能够测试我的密码验证应用程序,我使用 MChip 使用以下个人资料信息对卡进行了个性化:
- MChip Jcop
- 应用程序版本 1.0
- 配置文件修订版 1.0.11
- 需要通用操作系统。
在阅读了关于这些问题的贡献后,无法生成正确的应用程序密码和手动生成密码,我试图检查我的卡的密码版本号,但我的个性化数据中没有标签 0x9F10,我无法在个性化之前添加这个标签. 我在 Thales HSM 上尝试了各种密码生成组合,但没有返回与卡返回的值相同的值。
在可以访问开发密钥的开发阶段,我已经检查以确保密钥是好的,为密码生成传递了相同的数据,在这个阶段我完全不知道该怎么做。我将不胜感激在这个问题上能得到的任何帮助。谢谢
foreach (var tagLen in EMVTag.ParseDOL(crmDolstr))
{
requestData.Append(EMVData[tagLen.Split(',')[0]]);
dolData.AppendFormat("{0}|{1},", tagLen.Split(',')[0],
EMVData[tagLen.Split(',')[0]]);
}
string commandStr = string.Format("80 AE 8000 {0} {1} 00",
GetHexLen(requestData.ToString()), requestData.ToString());
byte[] hexData = Helpers.HexStringToBytes(commandStr);
apdu = new APDUCommand(hexData);
public APDUCommand(byte[] apdu)
{
if (apdu.Length < 5)
throw new Exception("Wrong APDU length.");
this.cla = apdu[OFFSET_CLA];
this.ins = apdu[OFFSET_INS];
this.p1 = apdu[OFFSET_P1];
this.p2 = apdu[OFFSET_P2];
this.lc = apdu[OFFSET_LC];
if (this.lc == apdu.Length - 5)
this.le = (byte) 0;
else if (this.lc == apdu.Length - 5 - 1)
this.le = apdu[apdu.Length - 1];
else
throw new Exception("Wrong LC value.");
this.data = new byte[this.lc];
System.Array.Copy(apdu, OFFSET_CDATA, this.data, 0,
this.data.Length);
}