BS结构RFID读写器web插件开发之八-----DES和3DES加解密

DES和3DES加解密

关于DES和3DES

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插件支持的3DES

友我科技IC卡web插件系统支持DES和3DES算法,可以单独使用,也可以直接配合IC卡使用,因为使用的是标准算法, 所以加密的DES或者3DES数据可以在别的设备上解密.兼容性没有问题.

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

在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

CPU卡很多的计算都需要3DES,在计算密钥文件对随机数进行3DES计算, 这是可以使用IC卡web插件的3DES算法来计算并对CPU卡进行密钥认证。

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

BS结构RFID读写器web插件开发之八-----DES和3DES加解密

上一篇:记一次 .NET 某外贸Web站 内存泄漏分析


下一篇:如何在SPA Angular应用程序中使用FastCube .NET