您是否必须使用Alteryx R工具中的Rs Digest功能逃避反斜杠或进行任何特殊编码

时间:2015-07-07 21:21:11

标签: r sha revolution-r alteryx

我正在使用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查看下面计算的正确值;

Calculated With Python

我还使用R命令行工具计算了正确的值。这让我相信Alteryx在某种程度上改变了输入,结果产生了错误的输出。有没有人遇到这个或知道可能的解决方法。

我的R工具脚本如下:

enter image description here

其中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

1 个答案:

答案 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;