获取aws s3(ruby)的签名密钥
我正在尝试运行一个脚本来获取aws签名密钥的十六进制表示形式。但是,我在终端上看到了:获取aws s3(ruby)的签名密钥,ruby,amazon-web-services,amazon-s3,Ruby,Amazon Web Services,Amazon S3,我正在尝试运行一个脚本来获取aws签名密钥的十六进制表示形式。但是,我在终端上看到了: ???>?^?c???w?,????-??e??$C 我的代码怎么了 #!/usr/bin/env ruby require 'openssl' def getSignatureKey key, dateStamp, regionName, serviceName kDate = OpenSSL::HMAC.digest('sha256', "AWS4" + key, dateStamp)
???>?^?c???w?,????-??e??$C
我的代码怎么了
#!/usr/bin/env ruby
require 'openssl'
def getSignatureKey key, dateStamp, regionName, serviceName
kDate = OpenSSL::HMAC.digest('sha256', "AWS4" + key, dateStamp)
kRegion = OpenSSL::HMAC.digest('sha256', kDate, regionName)
kService = OpenSSL::HMAC.digest('sha256', kRegion, serviceName)
kSigning = OpenSSL::HMAC.digest('sha256', kService, "aws4_request")
kSigning
end
puts getSignatureKey('wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY','20170110', 'us-west-1', 's3')
中的值本质上是二进制的。如果你想让它们可读,那么你必须使用
hexdigest
或自己转换它们。Ruby约定强烈鼓励人们使用方法名,如get\u signature\u key
,在需要时,所有方法名都用小写加下划线作为分隔符。大写字母在Ruby中有着重要的意义,它是为ClassName
、ModuleName
和常量名称
类型情况保留的。