ファイルの内容が同じ場合、エンコードされたバージョンも同じであるようにファイルをエンコードする必要があります。Ruby - GzipWriterがヘッダにメタデータを追加しないようにします。
This is my secret setup file
私のコードは次のとおりです。:
私は、config.yml
をエンコードするために必要なファイルは、以下の文字列が含ま時
require 'stringio'
require 'base64'
require 'zlib'
my_text = File.read('config.yml')
wio = StringIO.new('W')
w_gz = Zlib::GzipWriter.new(wio)
w_gz.mtime = 0 # Specify the modification time (mtime) in the gzip header
w_gz.orig_name = 'userdata' # Specify the original name (str) in the gzip header
w_gz.write(my_text)
w_gz.close
puts Base64.encode64(wio.string)
Base64
は、エンコードされた文字列をレンダリングし、 config.yml
の内容が同じ場合、文字列はまったく同じでなければなりません。スクリプトの
最初の実行:
しかし、いくつかのメタデータは、同じH4sIC ゴー Am1kAA3VzZXJkYXRhAAvJyCxWAKLcSoXi1OSi1BIgVVJaoJCWmZPK BQAdlUQpHQAAAAの==
Base64
エンコードさの文字列、例を取得することができなくなりますが追加されているようです後で
秒:
H4sIC G4
分後 Am1kAA3VzZXJkYXRhAAvJyCxWAKLcSoXi1OSi1BIgVVJaoJCWmZPK BQAdlUQpHQAAAAの==:
H4sIC GKB m1kAA3VzZXJkYXRhAAvJyCxWAKLcSoXi1OSi1BIgVVJaoJCWmZPK BQAdlUQpHQAAAAの==
GzipWriterはzlibライブラリを使用しているので、これは避けられないようです。コマンドラインを使用してgzipファイルを作成し、エンコーディングが同じかどうか確認してください。ファイルを圧縮するのは根本的に新しい操作なので、私の気持ちは決して同じではないということです。また、生成されたMD5ハッシュまたはSHA1ハッシュを比較して、それらが異なるかどうかを調べる必要があります。 –
@ RudolfOlah文字列が異なる場合、ハッシュも異なるはずです。 – tadman