簡體   English   中英

如何知道上傳的文件是否已更改?

[英]How to know if the uploaded file has been changed?

如果用戶將某些文件上傳到我的服務器上,並且我想確保該文件與上次用戶上次上傳以來沒有發生更改,那么如何獲得此信息?

我有一個帶有User_idFileName的日志表( User_id是唯一的)。 閱讀內容后刪除文件。

您可以在刪除文件之前存儲該文件的哈希 要查看是否與上傳的文件相同,請將哈希值與上一個哈希值進行比較。 您可以使用System.Cryptography中的HashAlgorithm類之一,例如SHA1來執行此操作。

“加密散列函數是一種確定性過程,該過程采用任意數據塊並返回固定大小的位字符串((加密)散列值,以便對數據進行意外或有意更改將更改散列值”)

這是一些入門示例代碼,假設變量stream是包含文件數據的流(可以使用FileStream打開它):

var sha = new System.Security.Cryptography.SHA1Managed();
byte [] hash = sha.ComputeHash(stream);

現在,變量hash將包含哈希,即文件內容的指紋。 即使是很小的更改(例如單個位)也將導致不同的哈希值,但是對同一文件進行哈希處理將始終返回相同的哈希值。

哈希是一種通用的功能。 通常,為了檢測對大數據塊(如文件)的更改,需要使用一些crc

在Linux下有標准實用程序cksum

您可以生成cksum 文件名並獲取輸出。 將其存儲在例如數據庫中,並檢查傳入的新文件。

暫無
暫無

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

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