CF DESEDE encrypt () Проблема длины ключа - PullRequest
1 голос
/ 08 сентября 2010

Я пытаюсь зашифровать строку с помощью ColdFusion encrypt () с помощью ключа, предоставленного третьей стороной, например:

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

Я получаю:

"Указанный ключнедопустимый ключ для этого шифрования: алгоритм неверного ключа, ожидаемый DESede. "

Что мне нужно сделать с этим ключом с точки зрения кодирования / декодирования, чтобы получить его в нужном формате?

Ответы [ 2 ]

1 голос
/ 09 сентября 2010

Как правило, при использовании предоставленных ключей от других языков вам необходимо выполнить небольшую гимнастику, чтобы передать его в 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"));

Надеюсь, этой информации хватит, чтобы вы могли отправиться в путь!

0 голосов
/ 08 сентября 2010

Единственное, что мне кажется странным - это значение алгоритма, которое вы используете.Может быть, попробуйте это?

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

Я не знаю, будут ли настройки /CBC/NoPadding такими, как вы хотите, но я не думаю, что они будут разрешены в аргументе алгоритма.

...