问题标签 [emv]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javacard - 测试 EMV 卡的 RSA 密钥
根据 EMV 标准,我们需要两个 RSA 密钥。
1)颁发者 RSA 密钥(将使用 1408 位)
2) ICC RSA 密钥(将使用 1152 位)
这里 Issuer RSA 私钥用于计算 ICC 公钥证书。EMV 卡包含在 SDA/DDA 中使用的各种标签8F
,例如90
(颁发者公钥证书)
(ICC PUBLIC KEY CERTIFICATE)等。9F46
其实我想用java语言个性化一张EMV卡,想自己处理所有的计算。这需要 RSA 密钥(SDA/DDA 需要 RSA Stuff)
EMV 也有 DGI8201-8205
包含 CRT 格式的 ICC RSA 私钥。
我知道这很复杂,但这是深入了解 EMV 技术的唯一方法。任何人都可以告诉我如何获得可以解决我的目的并可以在 EMV 计算中使用它的 RSA 密钥。提前致谢。
encryption - MSR DUKPT 的 MAC 变体?
目前我正在研究 ChipCard EMV 设备解密。下面是我使用交易后的相关数据(TLV格式作为标签长度值):
我知道这个设备的 BDK 是0123456789ABCDEFFEDCBA9876543210
. 根据解密指令,它提到 DFDF59 包含以下标签:
每条指令都提到了“ MSR DUKPT 的 MAC 变体”,其中 MAC 代表消息验证码,以及“通过 TLV 格式解析数据。对于加密的数据标签,使用 TDES_Decrypt_CBC 对其进行解密”。
我尝试通过 KSN、BDK 和加密数据 DFDF59 使用 3DES DUKPT。它行不通。解密领域的任何人都可以给我一些建议吗?我们的供应商非常不愿意分享他们的知识......
我不知道 MAC 如何在解密中真正发挥作用....我认为 MAC 只是一个完整性检查....我正在使用从 KSN 和 BDK 生成的 3DES DUKPT 会话密钥。这适用于该设备中的其他解密,但不能解决 DFDF59(芯片卡 EMV 解密)......这就是为什么我开始怀疑我是否使用了正确的会话密钥......随意只是把想法扔在那里。谢谢!
credit-card - EMV卡在线密码验证
是否有不支持在线 PIN 验证的 EMV 卡?还是所有 EMV 卡都支持在线和离线 PIN 码,由终端决定使用哪个?
提前致谢。
iso8583 - J8583 Api 和 EMV 凭证
我一直在看 J8583:http: //j8583.sourceforge.net/xmlconf.html。
这是一个很棒的 Api,维护得很好,对作者/开发者表示敬意。
我想知道是否有人成功地将它用于 EMV 交易和/或图书馆是否可以处理这些数据和/或这样做是否安全。
看起来好像我需要使用复合自定义字段来查看主位图的字段 55。如果数据存在,那么我需要调查 EMV 标签并根据需要进行解析。
我的示例 ISO 消息如下所示:
6666 前缀是我为测试这种情况而设置的模板,它只有 LLLVAR 类型的字段 55
如果我们要查看解码 EMV 数据,我们可以使用http://www.emvlab.org/tlvutils/并粘贴:
将产生一个我正在有效地尝试重现的结果表。
我的输出很简单:
因为我还没有处理自定义字段,因为我想先询问 SO 社区他们的想法。
提前感谢您的任何帮助/建议。
还有...如果有人读到这篇文章有 1500 个代表,也许 J8583 si 值得拥有自己的标签?
embedded - 克服 EMV TLV 长度限制限制
我们有代码来询问来自各种 EMV TLV 的值。但是,对于 PED 序列号, http ://www.emvlab.org/emvtags/ 上标签“9F1E”的规范 具有:-
名称 说明 源 格式 模板 标签长度 P/C 接口设备 (IFD) 序列号 制造商分配给 IFD 的唯一且永久的序列号 终端 8 9F1E 8 原语
但是上面给出的限制是 8,而我们有 9 长 SN 的 VeriFone PED。
所以依赖标签“9F1E”的示例代码无法检索完整长度。
在上面,写了 GetTLV() 以获取标签 arg 并将值填充到 char 数组中。
是否有任何开发人员找到了检索完整 9 的好方法?
iso8583 - ISO8583 消息的标准模板
所以我理解并意识到 ISO8583 消息因规范而异,但我想知道是否有资源可以帮助我确定哪些字段是绝对必须的。例如,“0200”消息肯定必须包含 PAN 和 Amount 字段?
我发现很难找到任何此类资源,即使它们带有附加信息,看看一些通用模板也会很棒。
很感谢任何形式的帮助。
payment - 如何在 EMV 中设置在线密码验证
我正在尝试修改终端功能以仅接受在线卡 PIN 验证这是一个适用于离线的示例:
1.现在我需要更改值来强制终端只接受在线密码验证
2.我正在寻找可以帮助我为 EMV 生成这些标签和值的工具
有任何想法吗?
c# - 存储命令到 DGI 0202 给出 6A88 错误
我正在尝试使用我的工具个性化以下数据,但出现“6A88”错误。
以下是DGI的个性化。亲爱的 Arjun,请从下面找到完整的命令。
错误日志:
Send------> 91023BA539500D5669736120456C656374726F6E8701019F1101019F120D5669736120456C656374726F6E5F2D02656E9F38039F1A02BF0C059F4D020B0A
Response------> 9000
Send------> 91041282023C00940C080101001001040018010201
响应-----> 9000
Send------> 01014F704D57134166390514720355D20122261656381400000F9F1F183136353633303030303030303030303831343030303030305F201A454E434F4445445F303335352020202020202020202020202020
Response------> 9000
Send------> 020181B67081B39081B0826E5DE2DA465AD6F14959414D5D672A9B806C8425BCAD154899B973A3A94896E2A4ECFF197C2025AE8315274DE2770787ED9006936B45CDE6F1B176E933FF09A38951804B12E8A5DAA30470FCA97B64E5562E1DA9B90B654BB463BC5E8134A08559641FC78D0A423FCDC1B59460446C8C004CF85956F931C52DD1506BD59DCC12C903B7A57544D0E7666E4E2F9F762189E8ECC827A304DB8429A6C0BCB3F1DD5EB80F1DBAA3846529A392BD448B3984
Response------> 9000
Send------> 02023970378F01929224FB1D71CEDE213DB6F40CED0069B2C4E49FA4EF16D9C7701BD1F93E60DB5833EAE7C010219F3201039F4701039F49039F3704
Response------> 6A88
成功日志:
Send------> 91023BA539500D5669736120456C656374726F6E8701019F1101019F120D5669736120456C656374726F6E5F2D02656E9F38039F1A02BF0C059F4D020B0A
Response------> 9000
Send------> 91041282023C00940C080101001001040018010201
Response------> 9000
Send------> 01014F704D57134166390514720355D20122261656381400000F9F1F183136353633303030303030303030303831343030303030305F201A454E434F4445445F303335352020202020202020202020202020
Response------> 9000
Send------> 020181B67081B39081B0826E5DE2DA465AD6F14959414D5D672A9B806C8425BCAD154899B973A3A94896E2A4ECFF197C2025AE8315274DE2770787ED9006936B45CDE6F1B176E933FF09A38951804B12E8A5DAA30470FCA97B64E5562E1DA9B90B654BB463BC5E8134A08559641FC78D0A423FCDC1B59460446C8C004CF85956F931C52DD1506BD59DCC12C903B7A57544D0E7666E4E2F9F762189E8ECC827A304DB8429A6C0BCB3F1DD5EB80F1DBAA3846529A392BD448B3984
Response------> 9000
Send------> 02023970378F01929224FB1D71CEDE213DB6F40CED0069B2C4E49FA4EF16D9C7701BD1F93E60DB5833EAE7C010219F3201039F4701039F49039F3704
Response------> 9000
谁能帮我解决这个问题?而其他工具成功地个性化了芯片上的相同数据。
javacard - 选择 PPSE GIVES 6700,(VISA Paywave)
我有两种不同的智能卡芯片,里面有 Visa Paywave(一个是原生的,另一个是 Java Card)。
我正在尝试运行 select PPSE 或 select Application 命令,一张卡给出了预期的结果,而另一张卡给出了状态字6700
。
我们还有一些其他的专有测试工具在两张卡上都获得了不错的结果。这意味着两张卡中都有一个 PPSE 和应用程序。我想知道为什么我的工具发送相同的命令但得到不同的结果。
任何建议在这里都会有所帮助。
java - 读取和写入 EMV 卡
这是新事物,我从未做过任何与在线交易或借记卡/信用卡相关的编码。我被告知要研究 EMV(EuroPay Master Visa)卡以在 Android 应用程序中实现它。
到目前为止,我收集了关于
- APDU
- 文件结构
- 发送“APDU 命令”以从卡中获取有用信息。
- APDU 字段(CLA、INS、P1、P2、Lc、数据、Le)
- “APDU 响应”从卡发送回读卡器。
所有这些过程都发生在卡和读卡器之间。就我而言,读卡器连接到安卓设备。我可能需要在 android 应用程序中向用户显示卡详细信息(例如:显示卡号的最后 4 位数字)。我的问题是
- 如果我想对卡进行身份验证,APDU 命令字段中的可能值是什么?
- 如何使用 Java 在读卡器和设备之间进行通信。
PS:我不需要任何代码。我只需要一个简单的解释,一旦我理解了这个概念,我将继续研发。