Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取aws s3(ruby)的签名密钥_Ruby_Amazon Web Services_Amazon S3 - Fatal编程技术网

获取aws s3(ruby)的签名密钥

获取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)

我正在尝试运行一个脚本来获取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)
    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
常量名称
类型情况保留的。