1赞

评论

收藏

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

开发技术 开发技术 发布于:2021-06-26 10:53 | 阅读数:525 | 评论:0

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开发指南.
关注下面的标签,发现更多相似文章