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:無
function enDES()
{
var desKey;
var desData;
var desMode;
desMode = 0;
desKey ="11223344556677889900AABBCCDDEEFF";
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)
M1WriteBlock(blockindex,blockdata,FormatID)
M1卡讀扇區,支持將讀取的數據進行DES或者3DES加或者解密后送回
M1ReadSector(sectorindex, FormatID)
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卡進行密鑰認證。
