C#建立傳輸檔案MD5驗證碼
由於Internet的開放性,任何檔案在傳輸過程中都可能受到篡改,而且傳輸過程的不確定性,使得我們缺乏有效的方法保證傳輸檔案的安全。為了避免上述情況,最普遍的做法是隨傳輸檔案提供一個驗證碼,即對傳輸的檔案產生一個MD5的值並記錄在案,使用者在收到檔案後,通過重新計算檔案驗證碼並與原始驗證碼比較,如果不匹配則表示檔案在傳輸過程中發生了改變。
驗證傳輸檔案MD5值的具體過程:
一、 載入檔案
在構建檔案驗證碼之前,首先需要載入檔案,這就要用到.Net framework的FileStream類。在.Net framework下,檔案都表示為一個Stream,即位元組序列的抽象概念。而所有涉及檔案的讀寫操作都通過Stream類的屬性和方法實現。
System.IO.FileStream fst= new System.IO.FileStream(txtFile.Text,FileMode.Open,FileAccess.Read, FileShare.Read, 8192);
這裡使用了FileStream構建函式的一種過載方法,需要提一下的是最後一個引數值8192,該引數值定義的是緩衝區的大小,即當檔案大於8K時,以8K為單位,對檔案進行分段讀取,以提高讀取檔案的效能。
二、 建立MD5物件
在成功建立FileStream物件之下,接下來可以使用MD5類計算該物件的雜湊值。這個實現過程非常簡單,只要先宣告一個MD5CryptoServiceProvider例項,然後使用ComputeHash方法完成計算過程,最後通過Hash屬性就可以得到計算好的位元組陣列了。
System.Security.Cryptography.MD5CryptoServiceProvider md5=new System.Security.Cryptography.MD5CryptoServiceProvider();
System.IO.FileStream fst= new System.IO.FileStream(txtFile.Text,FileMode.Open,FileAccess.Read, FileShare.Read, 8192);
md5.ComputeHash(fst);
byte[] hash=md5.Hash;
三、轉換驗證碼字串
由於MD5雜湊演算法返回的是一個位元組資料,因此需要轉換成字串。
byte[] hash=md5.Hash;
StringBuilder sb=new StringBuilder();
foreach(byte byt in hash)
{
sb.Append(String.Format("{0:X1}", byt));
}
//TextBox1.Text = sb.ToString();將轉換的驗證碼字串跟原始驗證碼對比
在轉換過程中,首先定義了一個StringBuilder物件,這主要是處於效能上的考慮;接著遍歷MD5雜湊值中的每個位元組,並使用String.Format方法直接將位元組轉換成16進位制格式的字串,最後輸出結果字串即可。
相關推薦
C#建立傳輸檔案MD5驗證碼
由於Internet的開放性,任何檔案在傳輸過程中都可能受到篡改,而且傳輸過程的不確定性,使得我們缺乏有效的方法保證傳輸檔案的安全。為了避免上述情況,最普遍的做法是隨傳輸檔案提供一個驗證碼,即對傳輸的檔案產生一個MD5的值並記錄在案,使用者在收到檔案後,通過重新計算檔案驗證
用C#實現簡單的帶有驗證碼及密碼使用MD5加密的“登入”WinForm小程式
初學C#Windows窗體程式時,做個簡單的“登入”是再簡單不過的了。像下面這樣的,功能稍理想了吧? 有後臺數據庫,有驗證碼,資料庫中密碼是密文(如圖所示:資料庫中表資料是32位MD5加密的……) 下面講解如何實現。 步驟: 1、建立相應的資料
C# 生成n位隨機驗證碼
生成n位隨機驗證碼,程式碼如下: public static string RandomCode(int n) { int number; char code; string StrCode = String.Empty; Rand
C#系統登錄隨機驗證碼生成及其調用方法
方法 string script draw ESS summary fin 就是 clas 話不多說,直接上代碼 public ValidateCode() { } /// <summary>
C#.Net 較完美隨機驗證碼
using System;using System.Collections;using System.ComponentModel;using System.Data;using System.Drawing;using System.Web;using System.Web.SessionStat
android通過JNI用C/C++建立本地檔案
通過jni在本地建立檔案 1.在android studio建立基本的jni工程,並且在APP介面成功顯示"Hello from C++" 不會的可以看android studio使用jni 2.在native-lib.cpp檔案中建立檔案 為了方便,我們直接在stringFromJ
使用Dev C++建立工程檔案呼叫不同檔案下的c檔案
在學校嵌入式軟體小組課上直播翻車,很尷尬 !!!! 然後我結束以後仔細找了一歘啊錯誤原來是因為沒有主一標頭檔案的包含形式導致的 我先介紹一下C語言包含標頭檔案時<>和""區別 我在剛學的時候就有一種疑惑 ,為什麼學長的資料夾下面包含標頭檔案有時候就是#inclu
C# 建立INI檔案,寫入並可讀取
using System.Text; using System.IO; using System.Runtime.InteropServices; namespace HotelSystemORM.Unitl { public class IniFiles {
C語言計算檔案MD5
計算MD5這種很標準的東西,一般直接使用別人寫好的了就行,本文主要針對寫好的介面測試一下如何使用的問題。 下面是MD5的實現 md5.h #ifndef MD5_H #define MD5_H typedef struct
Linux C TCPSocket 傳輸檔案簡單例項-多執行緒實現
在Linux下使用C語言TCPSocket實現簡單檔案傳輸,包括客戶端和伺服器端,其中,伺服器端使用多執行緒實現同時接收多個客戶端傳送的檔案。 傳送檔案內容之前,首先需要將檔名和長度資訊傳送到伺服器,為了便於區分,採用傳送結構體的方式,設定標誌位,1標識資料域
C#建立Excel檔案並將資料匯出到Excel檔案
工具原料:Windows 7,Visual Studio 2010, Microsoft Office 2007建立解決方案選單》新建》專案》Windows窗體應用程式:新增相關元件:新增兩個DataGridView,一個TextBox,兩個按鈕 ,如下圖:新增Excel資源
C#驗證碼的建立和使用
先新增一個驗證碼類ValidateCode using System; using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; using System.IO;
C#實現登陸驗證碼圖片的動態生成
res pla brush rgb nal pub array ide try public ActionResult SecurityCode() { string oldcode = TempData["SecurityCode"] as string; strin
C#生成驗證碼之四位隨機數
返回 args nbsp ica ebo inpu cti spa ini 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using Sys
Python學習心得(五) random生成驗證碼、MD5加密、pickle與json的序列化和反序列化
用法 div com ict file imp randint csdn == # -*- coding:utf-8 -*- import random as rd #驗證碼 import hashlib as hsl #MD5加密 import pickle,json
建立一個漂亮的PHP驗證碼類文件及調用方式
去掉 -1 cti elephant orm random 上一個 ott 狀態 //驗證碼類class ValidateCode { private $charset = ‘abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ2345678
C#產生隨機驗證碼的代碼
toa 指定 nload dll bit resp static rectangle 設置 using System; using System.Collections.Generic; using System.Linq; using System.Web
C#驗證碼識別基礎方法實例分析
renren 幫助 流行 人工 esp 導致 edi count public 本文實例講述了C#驗證碼識別基礎方法,是非常實用的技巧。分享給大家供大家參考。具體方法分析如下: 背景 最近有朋友在搞一個東西,已經做的挺不錯了,最後想再完美一點,於是乎就提議把這種驗證碼
C++短信接口demo:創藍253平臺下的短信驗證碼接口、短信營銷接口
pes read arp errno tdi cat while add sizeof #include <arpa/inet.h>#include <assert.h>#include <errno.h>#include <net
【C/C++】如何獲取短信驗證碼---創藍253短信服務平臺
C C++ 創藍253 短信驗證碼 #include <arpa/inet.h>#include <assert.h>#include <errno.h>#include <netinet/in.h>#include <signal.h&g