簡體   English   中英

如何創建載波上傳的校驗和以驗證下載?

[英]How do I create a checksum of carrierwave upload to verify the download?

上傳文件時如何創建文件的校驗和(MD5,sha512等),以便在下載(使用cache_stored_file! )時可以驗證它確實是上傳的原始文件?

Ruby Digest模塊可以提供幫助。

一種解決方法是讀取上載的文件,並使用before_create回調為其分配一個唯一的摘要。 我會將其添加為數據庫中文件表上的一列。

這是IRB的一些輸出,以顯示其工作方式:

2.2.2 :001 > require 'digest'
 => true
2.2.2 :002 > f = File.read 'test.rb'
 => "Original content\n"
2.2.2 :003 > Digest::SHA256.hexdigest(f)
 => "646722e7ee99e28d618142b9d3a1bfcbe2196d8332ae632cc867ae5d1c8c57b5"

# (... file modified ...)

2.2.2 :004 > f = File.read 'test.rb'
 => "Original content with more content\n"
2.2.2 :005 > Digest::SHA256.hexdigest(f)
 => "c29f2f77c0777a78dbdf119bf0a58b470c098635dfc8279542e4c49d6f20e62c"

您可以在下載方法中使用此摘要來檢查文件的完整性。 如果您再次讀取該文件並生成摘要,並且該摘要與原始摘要匹配,則可以確信該文件自上載以來沒有被更改。

Ruby Digest模塊

md5 =摘要:: MD5.file('path_to_file')。hexdigest

這將以塊為單位讀取文件,並避免在File.read()中完成讀取RAM中的整個文件。

對於SHA校驗和

Digest::SHA2.hexdigest( File.read("/path/to/my/file.txt") );

要么

Digest::SHA2.file(myFile).hexdigest => "fa5880ac744f3c05c649a864739530ac387c8c8b0231a7d008c27f0f6a2753c7"

SHA校驗和生成的更多詳細信息SHA校驗

暫無
暫無

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

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