gpt4 book ai didi

ruby - 计算文件完整性和压缩 ruby

转载 作者:太空宇宙 更新时间:2023-11-04 09:32:20 27 4
gpt4 key购买 nike

通过 ruby​​ 通过网络传输后确定文件完整性的最受追捧的方法是什么?

我正在尝试编写将文件分成 block 的软件,计算 block 的校验和,然后将文件 block 连同校验和一起发送给客户端(可能不是按该顺序或方法,但计算校验和仍将包含在内)。

我正在寻找 rubies 库原生的散列函数,并且能够根据 block 大小及时计算。传输的文件通常约为 500mb,但有时高达或大于 7gb,因此哈希函数必须能够相当快地处理少量或大量(取决于 block 大小) block 。

我已经通过 Zlib 和摘要中的 MD5 研究了 crc32,但我想知道是否还有其他我应该研究的函数可能更快,或者哪些函数最适合这项任务。

还有什么是我可以在 ruby​​ 中使用的最好的压缩方法,它对于网络文件传输来说足够高效,并且可能会节省一些传输数据的时间。

最佳答案

文件完整性

md5 通常是最快的散列方法,但从加密安全的角度来看,现在被认为是无效的。

md5 之后,sha1 非常流行(并且速度稍慢),直到现在从密码安全的角度来看它也被认为是不够的。

require 'digest/sha1'
Digest::SHA1.hexdigest("hello world")

我们现在有 sha2sha256,它再次比 sha1 稍慢,但在密码安全方面是当前的王者。

require 'digest/sha2'
Digest::SHA2.hexdigest("hello world")

相关 StackExchange 问题:

https://security.stackexchange.com/questions/34488/using-md5-for-file-integrity-checks

即使您仅将哈希用于文件完整性检查,而不是用于加密目的,我们仍然建议您为此目的使用安全的哈希函数。

文件压缩:

您应该能够使用gzip 来压缩文件流。您可以先压缩文件,然后发送这个压缩文件,或者您可以在将文件推送到套接字的同时即时压缩文件(如果每次都必须压缩文件,这可能会很浪费)。

参见 http://ruby-doc.org/stdlib-1.9.3/libdoc/zlib/rdoc/Zlib/GzipWriter.html

要即时压缩文件,请尝试

gz = Zlib::GzipWriter.new(socket)
gz.write 'jugemu jugemu gokou no surikire...'
gz.close

关于ruby - 计算文件完整性和压缩 ruby,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30158702/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com