DES是一种标准加密算法,它使用对称密钥加密法.DES算法密钥为8字节.3DES(即Triple DES)是DES向AES过渡的加密算法,3DES算法是指使用双长度(16字节)密钥K=(KL||KR)将8字节明文数据块进行3次DES加密/解密。如下所示:
Y = DES( KL[DES-1( KR[DES( KL[X] )] )] )
解密方式为:
X = DES-1( KL[DES( KR[DES-1( KL[Y] )] )] )
其中,DES( KL[X] )表示用密钥K对数据X进行DES加密,DES-1( KR[Y] )表示用密钥K对数据Y进行解密
3DES是一种比较安全的加密算法,在IC卡和CPU卡中都得到广泛的应用.
友我科技IC卡web插件系统支持DES和3DES算法,可以单独使用,也可以直接配合IC卡使用,因为使用的是标准算法, 所以加密的DES或者3DES数据可以在别的设备上解密.兼容性没有问题.
IC卡web插件支持的DES和3DES有多种方式, 一种是DES和3DES加解密函数接口:
Des(DesData, DesDataForamt)
DES加解密函数要配合属性DesDir,DesMode,DesKey,DesKeyMode等使用
DesDir:数据加密方向
0:不加密
1:加密
2:解密
DesMode: 加解密原数据处理方式:
0:原数据
1:对原数据取反
2:原数据+原数据取反
DesKey: DES和3DES取决于密钥的字节长度,16字节密钥为3DES算法,8字节密钥为DES算法.
DesKeyMode:
DesKey密钥的格式:
0:16进制字符串
1:普通字符串
参数:DesData:要加解密的数据。DesDataForamt:数据的格式,0十六进制字符串,1普通字符串
回调函数返回结果:
FunctionID=22,
Result:数字,函数执行后的返回值,
UID:自定义的序号,
CardNo:无
strData:执行加解密后的16进制字符串
ValData:无
以下是加密的js示例:
function enDES()
{
var desKey;
var desData;
var desMode;
desMode = 0;
desKey ="11223344556677889900AABBCCDDEEFF";//16字节密钥为3DES算法, 8字节密钥为DES算法
desData ="1234567812345678";
rfidreader.DesDir=1;
rfidreader.DesMode=desMode;
rfidreader.DesKey=desKey;
rfidreader.DesKeyMode=0;
rfidreader.Des(desData, 0);
}
解密时改变rfidreader.DesDir=0就可以,还是调用同样的代码.
加解密结束后回调函数如下:
rfidreader.onResult(function(resultdata)
{
switch(resultdata.FunctionID)
{
case 22:
if(resultdata.Result>0)
{
DESData = resultdata.strData;
}
else
{
Alert("Error");
}
break;
}
}
);
在IC卡中可以将数据先进行DES或者3DES加密后,然后写入。或者读出后进行DES解密。这样做需要分2个步骤进行, 耗时可能会长一些。 友我科技IC卡web插件中,允许在读写IC卡内容时同时对数据进行加解密操作,这样做更快也更安全。
M1卡读块,支持将读取的数据进行DES或者3DES加或者解密后送回
M1ReadBlock(blockIndex, FormatID)
M1卡写块,支持DES或者3DES加密后写块
M1WriteBlock(blockindex,blockdata,FormatID)
M1卡读扇区,支持将读取的数据进行DES或者3DES加或者解密后送回
M1ReadSector(sectorindex, FormatID)
M1卡写扇区,支持DES或者3DES加密后写扇区
M1WriteSector(blockindex,blockdata,FormatID)
这4个函数api接口都支持是同时进行DES或者3DES操作,取决于如下属性:
DesDir:数据加密方向
0:不加密
1:加密
2:解密
DesMode: 加解密原数据处理方式:
0:原数据
1:对原数据取反
2:原数据+原数据取反
DesKey: DES和3DES取决于密钥的字节长度,16字节密钥为3DES算法,8字节密钥为DES算法.
DesKeyMode:
DesKey密钥的格式:
0:16进制字符串
1:普通字符串
CPU卡很多的计算都需要3DES,在计算密钥文件对随机数进行3DES计算, 这是可以使用IC卡web插件的3DES算法来计算并对CPU卡进行密钥认证。
参考资料: IC卡读卡器web开发指南.