我正在使用Alteryx R工具进行一些sha256哈希计算,但是我的一个输入遇到了麻烦。我正在尝试为以下输入生成sha256哈希:
POST\n/\n\ncontent_type:\nhost:dynamodb.us-east-1.amazonaws.com\nx-amz-date:20150707T201951Z\nx-amz-target:DynamoDB_20120810.CreateTable\n\ncontent_type;host;x-amz-date;x-amz-target\n09a8bcdeea1d20631f887235820bbff0a614679080a2e74a89ceb1a1bcc71b44
我的功能是:
digest('POST\n/\n\ncontent_type:\nhost:dynamodb.us-east-1.amazonaws.com\nx-amz-date:20150707T201951Z\nx-amz-target:DynamoDB_20120810.CreateTable\n\ncontent_type;host;x-amz-date;x-amz-target\n09a8bcdeea1d20631f887235820bbff0a614679080a2e74a89ceb1a1bcc71b44', algo='sha256', serialize = FALSE)
并且R生成的哈希是:
7fe2c3fc70134481217952f27bb5f4af95193645903ba3a6d4d7ad45c3adade1
此值不正确。正确的值是:
9a493c643eeb736decc195a8e0e84e08f45a00bdbc21feaafa94be5f0f299af0
您可以使用Python查看下面计算的正确值;
我还使用R命令行工具计算了正确的值。这让我相信Alteryx在某种程度上改变了输入,结果产生了错误的输出。有没有人遇到这个或知道可能的解决方法。
我的R工具脚本如下:
其中c =
POST\n/\n\ncontent_type:\nhost:dynamodb.us-east-1.amazonaws.com\nx-amz-date:20150707T201951Z\nx-amz-target:DynamoDB_20120810.CreateTable\n\ncontent_type;host;x-amz-date;x-amz-target\n09a8bcdeea1d20631f887235820bbff0a614679080a2e74a89ceb1a1bcc71b44
答案 0 :(得分:0)
如果在输入字符串中使用\
替换所有\\
(在常规R或Python中),它将digest
改为以" 7fe开头的值... "所以这表明,Alteryx确实在向R的交接中做了类似的事情。
解决方法是在R工具之前通过Alteryx base64工具运行它,然后使用R工具库64解码,例如:
library("digest")
library("caTools")
df <- as.data.frame(read.Alteryx("#1", mode="data.frame"))
df$out <- digest(base64decode(as.character(df$b64),what="character"), algo='sha256', serialize = FALSE)
write.Alteryx(df, 1)
虽然不理想,但它会以&#34; 9a493开始提供正确的输出...&#34;