ハッシュをエンコードしようとしていますが、私が知っている値を返すことを期待しています。これは私がエンコードするために書いたルビースクリプトです。Ruby Base64モジュールを使用してハッシュをエンコードする方法
policy = {
"expiration": "2015-12-30T12:00:00.000Z",
"conditions": [
{"bucket": "sigv4examplebucket"},
["starts-with", "$key", "user/user1/"],
{"acl": "public-read"},
{"success_action_redirect": "http://sigv4examplebucket.s3.amazonaws.com/successful_upload.html"},
["starts-with", "$Content-Type", "image/"],
{"x-amz-meta-uuid": "14365123651274"},
{"x-amz-server-side-encryption": "AES256"},
["starts-with", "$x-amz-meta-tag", ""],
{"x-amz-credential": "AKIAIOSFODNN7EXAMPLE/20151229/us-east-1/s3/aws4_request"},
{"x-amz-algorithm": "AWS4-HMAC-SHA256"},
{"x-amz-date": "20151229T000000Z" }
]
}.to_s
enc = Base64.encode64(policy)
期待エンコード値:
eyAiZXhwaXJhdGlvbiI6ICIyMDE1LTEyLTMwVDEyOjAwOjAwLjAwMFoiLA0KICAiY29uZGl0aW9ucyI6IFsNCiAgICB7ImJ1Y2tldCI6ICJzaWd2NGV4YW1wbGVidWNrZXQifSwNCiAgICBbInN0YXJ0cy13aXRoIiwgIiRrZXkiLCAidXNlci91c2VyMS8iXSwNCiAgICB7ImFjbCI6ICJwdWJsaWMtcmVhZCJ9LA0KICAgIHsic3VjY2Vzc19hY3Rpb25fcmVkaXJlY3QiOiAiaHR0cDovL3NpZ3Y0ZXhhbXBsZWJ1Y2tldC5zMy5hbWF6b25hd3MuY29tL3N1Y2Nlc3NmdWxfdXBsb2FkLmh0bWwifSwNCiAgICBbInN0YXJ0cy13aXRoIiwgIiRDb250ZW50LVR5cGUiLCAiaW1hZ2UvIl0sDQogICAgeyJ4LWFtei1tZXRhLXV1aWQiOiAiMTQzNjUxMjM2NTEyNzQifSwNCiAgICB7IngtYW16LXNlcnZlci1zaWRlLWVuY3J5cHRpb24iOiAiQUVTMjU2In0sDQogICAgWyJzdGFydHMtd2l0aCIsICIkeC1hbXotbWV0YS10YWciLCAiIl0sDQoNCiAgICB7IngtYW16LWNyZWRlbnRpYWwiOiAiQUtJQUlPU0ZPRE5ON0VYQU1QTEUvMjAxNTEyMjkvdXMtZWFzdC0xL3MzL2F3czRfcmVxdWVzdCJ9LA0KICAgIHsieC1hbXotYWxnb3JpdGhtIjogIkFXUzQtSE1BQy1TSEEyNTYifSwNCiAgICB7IngtYW16LWRhdGUiOiAiMjAxNTEyMjlUMDAwMDAwWiIgfQ0KICBdDQp9
が、私のRubyスクリプトが戻っている:
ezpleHBpcmF0aW9uPT4iMjAxNS0xMi0zMFQxMjowMDowMC4wMDBaIiwgOmNvbmRpdGlvbnM9Plt7OmJ1Y2tldD0+InNpZ3Y0ZXhhbXBsZWJ1Y2tldCJ9LCBbInN0YXJ0cy13aXRoIiwgIiRrZXkiLCAidXNlci91c2VyMS8iXSwgezphY2w9PiJwdWJsaWMtcmVhZCJ9LCB7OnN1Y2Nlc3NfYWN0aW9uX3JlZGlyZWN0PT4iaHR0cDovL3NpZ3Y0ZXhhbXBsZWJ1Y2tldC5zMy5hbWF6b25hd3MuY29tL3N1Y2Nlc3NmdWxfdXBsb2FkLmh0bWwifSwgWyJzdGFydHMtd2l0aCIsICIkQ29udGVudC1UeXBlIiwgImltYWdlLyJdLCB7OiJ4LWFtei1tZXRhLXV1aWQiPT4iMTQzNjUxMjM2NTEyNzQifSwgezoieC1hbXotc2VydmVyLXNpZGUtZW5jcnlwdGlvbiI9PiJBRVMyNTYifSwgWyJzdGFydHMtd2l0aCIsICIkeC1hbXotbWV0YS10YWciLCAiIl0sIHs6IngtYW16LWNyZWRlbnRpYWwiPT4iQUtJQUlPU0ZPRE5ON0VYQU1QTEUvMjAxNTEyMjkvdXMtZWFzdC0xL3MzL2F3czRfcmVxdWVzdCJ9LCB7OiJ4LWFtei1hbGdvcml0aG0iPT4iQVdTNC1ITUFDLVNIQTI1NiJ9LCB7OiJ4LWFtei1kYXRlIj0+IjIwMTUxMjI5VDAwMDAwMFoifV19
を私はhttps://www.base64encode.org/を使用すると、それが期待されている正確に何を返します。私は期待値をhttp://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-post-example.htmlから取った
私はそれを正しくやっていますか? policy
はそうのような単一のラインであなたのハッシュの文字列表現を保持しているあなたの
期待する値は、JSONのような新しい行の文字列のbase64エンコードです。しかし、ハッシュの 'to_s'は同じ文字列を与えるわけではないので、出力に不一致があります。 –