Ich bin gerade dabei, ein Elixir-Projekt zu erstellen, das Google Cloud Storage verwendet. Einige unserer Kundenanforderungen schreiben vor, dass jeder Kunde seine eigenen separaten Verschlüsselungsschlüssel verwendet.Versuch, einen Sha256-Schlüssel und Hash in Elixir zu erstellen (Konvertierung aus Python-Code)
Ich kann sie mit dem von Hand bereitgestellten Google-Code erstellen, aber ich fragte mich, ob ich das automatisieren sollte (hauptsächlich aus meiner Neugier). Der Python-Code provided by Google ist:
import base64
import hashlib
import os
key = os.urandom(32)
print "Key: %sSHA256 hash: %s" % (base64.encodestring(key), base64.encodestring(hashlib.sha256(key).digest()))
Ich dachte, ich einige Elixir Code zusammen den Trick zu tun:
key = 32 |> :crypto.strong_rand_bytes |> Base.encode64
hash = :sha256 |> :crypto.hash(key) |> Base.encode64
IO.puts "Key: #{key}\nSHA256 hash: #{hash}"
Allerdings, wenn ich versuche, meine Elixir-generated verwenden Schlüssel und Hash Google beschwert sich als Also:
{
"domain": "global",
"extendedHelp": "https://cloud.google.com/storage/docs/encryption#customer-supplied_encryption_keys",
"message": "Missing a SHA256 hash of the encryption key, or it is not base64 encoded, or it does not match the encryption key.",
"reason": "customerEncryptionKeySha256IsInvalid"
}
Natürlich funktioniert der Python-Code, so scheint hier etwas Unterschied zu sein.
Hat jemand irgendwelche Ideen, warum das so ist? Vielen Dank!
Patrick, danke, dass für den Fang. Ich kann nicht glauben, dass ich das nicht bemerkt habe .... Zu lange eines Tages! Das war's. –