国密PSAM卡与CPU操作过程是怎么样的

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了国密PSAM卡与CPU操作过程是怎么样的相关的知识,希望对你有一定的参考价值。

参考技术A 1 终端设备向用户卡发送取随机数命令,得到一个卡片生成的随机数。
2 终端设备向 PSAM 卡发送一个加密命令,使其对上述随机数加密。
3 终端设备向用户卡片发送带有上述加密结果(密文)的外部认证命令。用户卡片进行验证后,确定认证是否成功。如果成功,则可以进行后续的安全操作。本回答被提问者采纳

BS结构RFID读写器web插件开发之六----CPU卡APDU操作

CPU卡APDU的web操作

CPU卡介绍

CPU卡与M1卡不同, 他不是一种逻辑存储卡,一张空白的CPU卡就类似于一个空白的硬盘, 什么也做不了.CPU卡使用之前必须对CPU卡进行文件系统的创建.就是建立目录和各种类型的文件.

友我科技IC卡读卡器web插件

友我科技IC卡读卡器web插件支持CPU卡的web操作,支持的浏览器有IE,Chrome,Firefox,safari,Opera以及以这些为内核的浏览器,在web上CPU卡的操作分为两种, 一个是CPU卡复位, 一个是发送APDU指令.

CPU卡复位

在CPU卡操作之前必须对CPU卡复位, CPU卡复位的web接口如下:

ACPUReset()

不需要任何参数, 复位后通过回调函数返回复位字符串
回调函数返回结果:

FunctionID=17,
Result:数字,函数执行后的返回值,
UID:自定义的序号,
CardNo:所操作的卡的卡号,16进制正常顺序,
strData:复位后的返回的16进制字符串
ValData:无

CPU卡APDU操作

CPU卡执行APDU指令,接口如下:

CPUCOS(COSHexString)

参数:COSHexString:要执行的COS指令,16进制字符串。

回调函数返回执行后的结果
回调函数返回结果:

FunctionID=19,
Result:数字,函数执行后的返回值,
UID:自定义的序号,
CardNo:无
strData:执行COS后的返回的16进制字符串
ValData:执行COS指令返回的状态,10进制显示,如:9000显示为36864

如果多次执行APDU指令, 需要等到上一次apdu执行并在回调函数中返回结果后方可执行下一条,这是可以借助UID参数来区分执行的adpu.

操作例程

如果已经安装了友我科技IC卡读卡器web插件系统,操作CPU卡,执行APDU就非常简单, 我们已取CPU卡随机数为例:
首先还是复位:

function CPUReset()
{
	rfidreader.Repeat=0;
	rfidreader.HaltAfterSuccess=0;
	rfidreader.ACPUReset();
}

回调函数返回结果:

rfidreader.onResult(function(resultdata)
{
	var str;
	switch(resultdata.FunctionID)
    {

		case 17:

		if(resultdata.Result>0)
		{
			Resetstr =resultdata.strData;
		}
		else
		{
			str= "Error";
		}
	
		break;
	
    }
}
);

Resetstr为复位获得复位字符串ATR

然后是执行APDU:

function CPUCos()
{
	rfidreader.Repeat=0;
	rfidreader.HaltAfterSuccess=0;
	rfidreader.CPUCOS("0084000008");//获得8字节随机数	
}

回调函数:

rfidreader.onResult(function(resultdata)
{
	var str;
	switch(resultdata.FunctionID)
    {

		case 19:
		str="COS:";
		if(resultdata.Result>0)
		{
			COSReturn=resultdata.strData;
		}
		else
		{
			str= "Error";
		}
	
		break;		
    }
}
);

COSReturn就是返回的随机数.

参考资料: IC卡读卡器web开发指南.

以上是关于国密PSAM卡与CPU操作过程是怎么样的的主要内容,如果未能解决你的问题,请参考以下文章

psam用途是啥

什么是PSAM卡

CPU卡一卡通的、系统密钥

SM2 国密算法工具QT版,彻底搞懂国密算法的使用

为啥有些门禁卡不能被华为NFC复制?

CPU是怎么执行指令的?