1

次のようなサードパーティが提供するキーを使用して、ColdFusion encrypt() を使用して文字列を暗号化しようとしています。

encrypteded = encrypt('theString', 'FD52250E230D1CDFD5C2DF0D57E3E0FEFD52250E230D1CDF', 'DESEDE/CBC/NoPadding', 'BASE64', ToBase64('0'));

私は得る:

「指定されたキーは、この暗号化に有効なキーではありません: 間違ったキー アルゴリズムです。DESede が必要です。」

このキーを適切な形式にするには、エンコード/デコードに関して何をする必要がありますか?

4

2 に答える 2

1

一般に、他の言語から提供されたキーを使用する場合は、Base64に取り込むために少し体操を行う必要があります。

重要な議論のためにこれを試してください:

 ToBase64(BinaryDecode('FD52250E230D1CDFD5C2DF0D57E3E0FEFD52250E230D1CDF','hex'))

しかし、これを機能させるには、入力文字列を8バイトの倍数にする必要があり(NoPaddingを指定しているため)、IVも8バイトの倍数にする必要がありました。

だから、これは私のために働いてしまいました-あなたが反対側でそれを解読できるかどうかはわかりません、つまり、彼らが指定しているIVが本当にあなたがそこにリストされているものであるかどうか。

 encrypteded = encrypt('theStrin', ToBase64(BinaryDecode('FD52250E230D1CDFD5C2DF0D57E3E0FEFD52250E230D1CDF','hex')), 'DESEDE/CBC/NoPadding', 'BASE64', ToBase64('0000'));

IVも同様に機能しませんでした(明らかに異なる出力で):

encrypteded = encrypt('theStrin', ToBase64(BinaryDecode('FD52250E230D1CDFD5C2DF0D57E3E0FEFD52250E230D1CDF','hex')), 'DESEDE/CBC/NoPadding', 'BASE64');

Hex IVが与えられている場合は、次のように使用できます。

encrypteded = encrypt('theStrin', ToBase64(BinaryDecode('FD52250E230D1CDFD5C2DF0D57E3E0FEFD52250E230D1CDF','hex')), 'DESEDE/CBC/NoPadding', 'BASE64', BinaryDecode("7fe8585328e9ac7b","hex"));

うまくいけば、これはあなたをあなたの道に連れて行くのに十分な情報です!

于 2010-09-08T23:28:34.780 に答える
0

私にはおかしいと思われるのは、使用しているアルゴリズムの値だけです。多分これを試してみませんか?

encrypteded = encrypt('theString', 'FD52250E230D1CDFD5C2DF0D57E3E0FEFD52250E230D1CDF', 'DESEDE', 'BASE64', ToBase64('0'));

設定が希望どおりになるかどうかはわかりませんが/CBC/NoPadding、アルゴリズムの引数で許可されるとは思いません。

于 2010-09-08T19:35:04.693 に答える