簡體   English   中英

在服務器端計算Md5

[英]Calculate Md5 on server side

我正在使用html5上傳文件並在客戶端(JavaScript)上計算md5,然后在服務器端(處理程序)將文件切片插入如下表中:

public void WriteBlobsToDB(byte[] buffer,int id)
    {
        File_Data fl = new File_Data();
        fl.FileId = id;
        fl.FileChunks = buffer;
        try
        {
            WiFileData.InsertOnSubmit(fl);
            dc.SubmitChanges();
        }
        catch (ExecutionEngineException e){throw e;}
    }

然后,當所有文件切片都保存在數據庫中時,我嘗試讀取它們並將它們保存在byte[] allData並將其插入另一個表中:

public void WriteBlobs(int id, string fileName,int count,byte[] allData)
{
    List<chunkInfo> listOfChunks;
    File_Data fd = new File_Data();
    File_List fl = new File_List();
    try
    {   var chunks = (from c in FileData
                      where c.FileId == id
                      orderby c.Id ascending
                      select new chunkInfo
                      {  Id = c.Id,
                         ChunkData = c.FileChunks.ToArray()
                      });
        listOfChunks = chunks.ToList();

        foreach (chunkInfo sChunk in listOfChunks)
        {   fl.FileId = id;
            fl.FileName = fileName;
            int dstoffset = count * sChunk.ChunkData.Length;// count is set to 0 at teh beggginning
            Buffer.BlockCopy(sChunk.ChunkData, 0, allData, dstoffset, sChunk.ChunkData.Length);
            count++;
        }
        int l = allData.Length;
        fl.FileData = new Binary(allData);
        FileList.InsertOnSubmit(fl);
        dc.SubmitChanges();

    }
    catch (Exception){throw;}
}

代碼正在工作,我將數據保存在數據庫中,並且allDatasize最后與我的文件大小相同。 我只需要驗證表中Filedata字段中保存的數據是否已寫入。 如何計算md5並進行比較?

謝謝

如果您詢問如何僅在SQL Server中能夠做到這一點,則可以簡單地利用HASH_BYTES函數,如下所示:

select  stored_md5_column, hashbytes('MD5', Filedata) as md5hash
from    your_table
where   stored_md5_column != hashbytes('MD5', Filedata);

根據您存儲“ stored_md5_column”值的方式,您可能需要將哈希字節的結果強制轉換為其他值,以自然地進行適當的相等比較。

如果您想在C#中執行檢查/驗證,那么您要在填充allData數組緩沖區后使用MD5類和類似的東西:

using (var md5Obj = MD5.Create())
{
    var md5Hash = md5Obj.ComputeHash(allData);
}

假設您的allData是一個字節數組(我無法從您的代碼中看出)。 如果不是字節數組,則首先需要將其轉換為標准字節數組或流,以傳遞給MD5 ComputeHash方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM