注意以下幾點。
在使用這個函數之前,必須將隨加密狗附帶的安裝程序安裝完整,並將安裝目錄下的Win32dll.dll文 件復制到系統目錄下。例如:
在Windows 2003下將安裝目錄下的“\SafeNet China\SoftDog SDK V3.1\Win32\Win32dll\HighDll\ Win32dll.dll”文件復制到“C:\Windows\system32\”文件夾中。
也不知道其他公司產品的加密狗的原理是不是也是這樣的,不過我感覺加密狗的基本原理都是這樣的, 公司提供加密狗的API接口.只不過不同的公司所提供的API接口不一樣罷了.
實例:
C#:
using System.Runtime.InteropServices ;
加密狗類:
public unsafe class Dog
{
public uint DogBytes, DogAddr; //設置加密狗字節長度和起始地址
public byte[] DogData; //設置數據的長度
public uint Retcode;
[DllImport("Win32dll.dll", CharSet = CharSet.Ansi)]
public static unsafe extern uint DogRead(uint idogBytes, uint idogAddr, byte* pdogData);
[DllImport("Win32dll.dll", CharSet = CharSet.Ansi)]
public static unsafe extern uint DogWrite(uint idogBytes, uint idogAddr, byte* pdogData);
public unsafe Dog(ushort num)
{
DogBytes = num;
DogData = new byte[DogBytes]; //設置數據的長度
}
public unsafe void ReadDog()
{
fixed (byte* pDogData = &DogData[0])
{
Retcode = DogRead(DogBytes, DogAddr, pDogData); //將數據讀出加密狗
}
}
public unsafe void WriteDog()
{
fixed (byte* pDogData = &DogData[0])
{
Retcode = DogWrite(DogBytes, DogAddr, pDogData); //將數據寫入加密狗
}
}
}
向加密狗裡邊寫入數據:Dog d=new Dog(10);d.DogAddr=0;for(int i=0;i<d.DogData.length;i++)d.DogData[i]=i;d.WriteDog();
讀取加密狗裡邊的數據:Dog d=new Dog(10);byte[] b;d.ReadDog();b=new byte [d.DogData.length];
for (int i=0;i<d.DogData.lengh;i++)b[i]=d.DogData[i];
extern:表明我們用到的該方法是在外部聲明的,即該方法是在win32dll.dll程序集裡邊;
unsafe:表明該加密狗類是不安全的.