0

Alteryx R ツールを使用して sha256 ハッシュ計算を行っていますが、入力の 1 つで問題が発生しています。次の入力に対して 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

私のr関数は次のとおりです。

 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 を使用して計算された正しい値を確認できます。

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
4

1 に答える 1

0

入力文字列 (通常の R または Python) ですべて\を置き換えると、「7fe...」で始まる値になるため、Alteryx が R へのハンドオフでそのようなことを実際に行っていることが示唆されます。\\digest

回避策は、R ツールの前に Alteryx base64 ツールを使用して実行し、R ツールで base 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)

理想的ではありませんが、「9a493...」で始まる正しい出力が得られます。

于 2017-01-23T17:51:04.550 に答える