zoukankan      html  css  js  c++  java
  • 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开发指南.

  • 相关阅读:
    PHP图像处理
    PHP文件上传
    PHP文件编程
    PHP面向对象
    【Codeforces Round #694 (Div. 1) B】Strange Definition
    【Codeforces Round #694 (Div. 2) C】Strange Birthday Party
    【Codeforces Round #693 (Div. 3) F】New Year's Puzzle
    【Codeforces Round #693 (Div. 3) G】Moving to the Capital
    【Codeforces Round #695 (Div. 2) E】Distinctive Roots in a Tree
    【Codeforces Round #695 (Div. 2) D】Sum of Paths
  • 原文地址:https://www.cnblogs.com/yoworfid/p/14803202.html
Copyright © 2011-2022 走看看