程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 項目中使用加密狗概述(2)

項目中使用加密狗概述(2)

編輯:關於C語言

注意以下幾點。

在使用這個函數之前,必須將隨加密狗附帶的安裝程序安裝完整,並將安裝目錄下的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:表明該加密狗類是不安全的.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved