C#加密狗程式

來源:互聯網
上載者:User

在購買加密狗時,廠家通常會附帶有開發手冊和一張光碟片。開發手冊中介紹了加密狗的使用方法和開發資料。本例使用賽孚耐資訊技術有限公司的加密狗產品,該產品提供了.NET中非託管的類庫,來完成加密狗的資料讀寫功能。下面介紹有關加密狗的類庫中的讀寫函數。

  ● DogWrite 函數

該函數將pdogData指向的資料寫入加密狗中,從DogAddr地址開始寫入,到DogBytes地址停止。

函式宣告如下:

    [DllImport("Win32dll.dll", CharSet = CharSet.Ansi)]

    public static unsafe extern uint DogWrite(uint idogBytes, uint idogAddr, byte* pdogData);

參數說明如下。

l     idogAddr:對軟體狗讀寫操作時使用者區中的首地址。取值範圍為0~99。

l     IdogBytes:對軟體狗讀寫操作時的位元組長度。讀寫時取值範圍為1~100,並且與idogAddr之和不能超過100。

l     pdogData:指標型變數。指向讀寫操作或變換的資料緩衝區。

l     傳回值:0表示操作成功,其他值是錯誤碼。

  ● DogRead函數

該函數從加密狗中的idogAddr開始的儲存區讀出資料,存入pdogData指定的緩衝區,讀出位元組數為idogBytes。切記,緩衝區大小要足夠長。

函式宣告如下:

[DllImport("Win32dll.dll", CharSet = CharSet.Ansi)]

    public static unsafe extern uint DogRead(uint idogBytes, uint idogAddr, byte* pdogData);

參數說明如下。

l     idogAddr:對軟體狗讀寫操作時使用者區中的首地址。取值範圍為0~99。

l     idogBytes:對軟體狗讀寫操作時的位元組長度。讀寫時取值範圍為1~100,並且與idogAddr之和不能超過100。

l     pdogData:指標型變數。指向讀寫操作或變換的資料緩衝區。

l     傳回值:0表示操作成功,其他值是錯誤碼。

在使用這個函數之前,必須將隨加密狗附帶的安裝程式安裝完整,並將安裝目錄下的Win32dll.dll檔案複製到系統目錄下。例如:

在Windows 2003下將安裝目錄下的“\SafeNet China\SoftDog SDK V3.1\Win32\Win32dll\HighDll\ Win32dll.dll”檔案複製到“C:\WINDOWS\system32\”檔案夾中。

寫一個對加密狗的讀寫類

Code
[StructLayout(LayoutKind.Sequential)]

//這個類用於讀寫加密狗

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); //將資料寫入加密狗

        }

    }

}

 

下面是讀寫方法Code
       /// <summary>
        /// 寫入加密狗
        /// </summary>
        public void Dogwrite()
        {
            Dog dog = new Dog(100);
            dog.DogAddr = 0;
            dog.DogBytes = 10;
            string str = "123456";
            for (int i = 0; i < str.Length; i++)
            {
                dog.DogData[i] = (byte)str[i];
            }
            dog.WriteDog();

            if (Dogred() == str)//寫入後馬上讀出來 檢測一下是否成功
            {
                MessageBox.Show("密碼已成功寫入加密狗!", "成功提示!", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                MessageBox.Show("密碼寫入加密狗失敗,請確認是否安裝加密狗驅動!", "失敗提示!", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
        /// <summary>
        /// 讀出密碼
        /// </summary>
        /// <returns></returns>
        public string Dogred()
        {
            string str1 = "123456";
            string str = "";
            Dog dog = new Dog(100);

            dog.DogAddr = 0;

            dog.DogBytes = 10;

            dog.ReadDog();

            if (dog.Retcode == 0)   //開始讀加密狗資料
            {

                char[] chTemp = new char[str1.Length];

                for (int i = 0; i < str1.Length; i++)
                {

                    chTemp[i] = (char)dog.DogData[i];

                }

                 str = new String(chTemp);
            }
            return str;
        }

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.