我如何在上傳文件時創建文件的校驗和(MD5,sha512,無論什麼),這樣當我下載時(使用cache_stored_file!
),我可以驗證它確實是上傳的原始文件?如何創建carrierwave上傳的校驗和來驗證下載?
0
A
回答
0
Ruby摘要模塊可以幫助解決這個問題。
單向解決方案是讀取上傳文件,併爲其分配一個帶有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"
您可以使用此消化你的下載方法來檢查文件的完整性。如果您再次讀取文件,生成一個摘要,並且它與原始摘要相匹配,則可以確信該文件自上傳以來未被更改過。
0
MD5 =文摘:: MD5.file( '文件路徑')。hexdigest
這將讀入的塊文件,並避免讀取在RAM中的整個文件,其在完成的File.read()
對於SHA校驗
Digest::SHA2.hexdigest(File.read("/path/to/my/file.txt"));
個OR
Digest::SHA2.file(myFile).hexdigest => "fa5880ac744f3c05c649a864739530ac387c8c8b0231a7d008c27f0f6a2753c7"
更多細節的SHA校驗和生成SHA Checksum
相關問題
- 1. 驗證Carrierwave上傳的大小
- 2. 使用Carrierwave驗證上傳的大小
- 3. IPV4頭校驗和驗證
- 4. Rails4:如何驗證carrierwave上傳的圖片大小?
- 5. 如何計算下面的校驗和?
- 6. Rails:上傳文件的校驗和
- 7. Xades-BES驗證爲校驗和
- 8. 使用binascii.crc32()驗證校驗和()
- 9. 上傳文件時計算校驗和
- 10. artifactory使用powershell上傳校驗和
- 11. 創建NLog文件校驗和
- 12. Matlab爲變量創建MD5校驗和
- 13. ICMP校驗和卸載
- 14. TCP上的校驗和
- 15. 消息上的校驗和
- 16. 如何通過使用Html和JavaScript進行驗證來創建驗證碼?
- 17. 爲Ruby中的傳入參數創建校驗和
- 18. 如何在Windows上執行校驗和?
- 19. 這段代碼如何驗證校驗和?
- 20. 如何驗證校驗和而不將其值設置爲零
- 21. 如何在運行時驗證代碼校驗和
- 22. Carrierwave文件的Mongoid驗證
- 23. 如何計算校驗和
- 24. 如何在Python中創建文件的校驗和
- 25. 如何創建文件校驗和的數字簽名(RSA)?
- 26. 如何創建媒體文件的穩定校驗和?
- 27. 如何驗證ICMPv6校驗和? (爲什麼我一直得到0x3fff的校驗和?)
- 28. 使用內部驗證來驗證動態創建的視圖
- 29. maven:「校驗和校驗失敗,沒有可用的校驗和」,爲什麼?
- 30. Jquery校驗和
的可能的複製http://stackoverflow.com/questions/34490/how-do-i-create-a-sha1-hash-紅寶石? –
@JakeWorth不,這是它的一部分,但我特別希望讓carrierwave獲得文件的哈希值,存儲它,然後在用來對文件執行後期處理時使用它來驗證下載。 – jrg