我在C#4中创建一个必须签署XML文件的应用程序.我没有遇到什么大问题,直到我遇到这个问题:访问智能卡/令牌以获取其证书和私钥.
什么都没有开箱即用,只需获得证书和密钥,基于密码.
没有任何付费框架,有谁知道如何做到这一点?
我想知道如何让Android手机充当非接触式卡,将某些数据传输到POS.是否有任何特定的意图我们应该尝试捕捉以及如何通过NFC与永恒的POS进行通信.
所以我已经能够从官方的德国智能卡中读取一些不安全的值.它适用于Numbers和Strings,但我无法理解如何解释Dates.
我想要阅读的日期指定为4字节日期,如规范中所示:http://imgur.com/3jU8k
我读的四个字节是:
0x4f 0x41 0x8d 0x00 (hex)
0100 1111 0100 0001 1000 1101 0000 0000 (binary)
Run Code Online (Sandbox Code Playgroud)
并应代表此日期:20.02.2012二进制:
20 - 0001 0100
02 - 0000 0010
2012 - 0111 1101 1100
Run Code Online (Sandbox Code Playgroud)
另一个:
0x58 0xAA 0x31 0x7f (hex)
0101 1000 1010 1010 0011 0001 0111 1111 (binary)
Run Code Online (Sandbox Code Playgroud)
应代表:19.02.2017
19 - 0001 0011
02 - 0010
2017 - 0111 1110 0001
Run Code Online (Sandbox Code Playgroud)
请帮我解决这个编码谜语
来自卡的数据可以通过商业软件读取,因此我猜我得到的原始数据可以以任何方式使用.
对于感兴趣的:供应商有一个非常庞大的规格,我已经搜索了很多次(http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=CELEX:32002R1360:DE:NOT多个可用语言)卡的结构首先在第119页提到
我有智能卡和读卡器(金雅拓).我想用C#读取卡的序列号.我在金雅拓支持网站上阅读了文档/图书馆,但没有任何信息对我有用.
我希望有人对金雅拓有所帮助我帮助我一些例子!
非常感谢 !
我正在尝试使用javax.smartcardioAPI 发送VERIFY(引脚)命令。我的密码是12345678。
根据我在网上发现的一些示例,我尝试使用此APDU:
00 20 00 83 08 01 02 03 04 05 06 07 08
Run Code Online (Sandbox Code Playgroud)
但结果是:
69 84 (reference data invalid)。
我也尝试过:
00 20 00 83 08 12 34 56 78
Run Code Online (Sandbox Code Playgroud)
但是我仍然遇到同样的错误。
根据我的SmartCart规范,该卡支持:
我有点绝望,因为我找不到出路。您能建议我对APDU进行一些更改,甚至是完全不同的方法(与我的智能卡连接的另一个库或语言)吗?
在EMV book v4.3 2第49页中说明
如果上述所有步骤都成功执行,则SDA成功完成.表7中恢复的数据认证码应存储在标签'9F45'中.
如何存储在标签9F45中恢复的数据验证代码
到目前为止,我陷入了这个阶段,我唯一提出的是我必须发出PUT DATA命令APDU.
任何帮助将不胜感激
使用javax.smartcardio类进行智能卡编程,我遇到了持久性错误 - 当代码看起来很好时,从卡中获取6700(无效长度)和类似的错误代码.示例代码:
req = new CommandAPDU(0x00, 0xA4, 0x04, 0x00, aid, 0x00);
Run Code Online (Sandbox Code Playgroud)
这应该构造一个案例4 APDU.为什么卡片会像我丢失的东西一样回应?
我正在开始一个新项目,我是新用的EMV阅读器和Javax SmartCardIO.
我有每种类型的卡的RID列表,但是我唯一可以在不知道卡类型的情况下访问的是ATR,我想知道是否有办法获得RID或卡类型只有这个信息,欢迎任何帮助.
提前致谢!
编辑:
我尝试使用此方法执行select PSE命令:
public static byte[] selectPSE(CardChannel channel) throws CardException {
byte[] selectPSE = {(byte)0x00, (byte)0xA4, (byte)0x04, (byte)0x00, (byte)0x0E, (byte)0x31, (byte)0x50, (byte)0x41, (byte)0x59, (byte)0x2E, (byte)0x53, (byte)0x59, (byte)0x53, (byte)0x2E, (byte)0x44, (byte)0x44, (byte)0x46, (byte)0x30, (byte)0x31};
CommandAPDU command = new CommandAPDU(selectPSE);
ResponseAPDU response = channel.transmit(command);
System.out.println(response.getBytes());
return response.getBytes();
}
Run Code Online (Sandbox Code Playgroud)
但是,它只与AMEX和Visa合作,我得到了两张万事达卡(信用卡和借记卡)的错误6a82.
这看起来很奇怪,据我所知,所有主要的发卡机构(包括万事达卡)都使用1PAY.SYS.DDF01,我可以通过试用和错误的AID得到我想要的信息,但我不认为这是最好的解.
有什么方法可以更改智能卡上的ATR?卡片NXP JCOP J2A40
ATR需要更改或添加才能与硬件卡一起正常使用
在某些Windows安装中,我们突然遇到了智能卡api的问题。调用SCardEstablishContext函数时似乎有内存泄漏。可以在控制台应用程序中重现该问题,其代码示例位于 http://www.pinvoke.net/default.aspx/winscard.scard建立上下文
class Program
{
#region Win32
// WinSCard APIs to be imported.
[DllImport("WinScard.dll")]
static extern int SCardEstablishContext(uint dwScope,
IntPtr notUsed1,
IntPtr notUsed2,
out IntPtr phContext);
[DllImport("WinScard.dll")]
static extern int SCardReleaseContext(IntPtr phContext);
[DllImport("WinScard.dll")]
static extern int SCardConnect(IntPtr hContext,
string cReaderName,
uint dwShareMode,
uint dwPrefProtocol,
ref IntPtr phCard,
ref IntPtr ActiveProtocol);
[DllImport("WinScard.dll")]
static extern int SCardDisconnect(IntPtr hCard, int Disposition);
[DllImport("WinScard.dll", EntryPoint = "SCardListReadersA", CharSet = CharSet.Ansi)]
static extern int SCardListReaders(
IntPtr hContext,
byte[] mszGroups,
byte[] mszReaders,
ref UInt32 pcchReaders);
#endregion
static …Run Code Online (Sandbox Code Playgroud) smartcard ×10
c# ×4
apdu ×3
emv ×2
java ×2
winscard ×2
android ×1
c#-4.0 ×1
gemalto ×1
mastercard ×1
memory-leaks ×1
native-code ×1
nfc ×1
pkcs#11 ×1