Шифрование данных из UNIVERSE / U2 / PICK - PullRequest
0 голосов
/ 14 января 2019

Я извлекаю некоторые данные из системы UNIVERSE и хочу зашифровать их для передачи по электронной почте.

Я не УНИВЕРСАЛЬНЫЙ эксперт, поэтому использую фрагменты, которые мы нашли по всему Интернету, и это «выглядит» так, как будто работает, НО я просто не могу расшифровать данные.

Ниже приведен скрипт, который я использовал на основе кода, найденного в Интернете:

RESULT=''
ALGORITHM="rc2-cbc"                     ; * 128 bit rc2 algorithm in CBC mode 
MYKEY="23232323" ; * HEX - Actual Key 
IV=   "12121212"               ; * HEX - Initialization Vector 


DATALOC=1                           ; * Data in String 
KEYLOC=1                            ; * Key in String 
ACTION=5                            ; * Base64 encode after encryption 
KEYACTION=1                         ; * KEY_ACTUAL_OPENSSL 
SALT=''                             ; * SALT not used 
RESULTLOC=1                         ; * Result in String RESULT 
OPSTRING = ''

RETURN.CODE=ENCRYPT(ALGORITHM,ACTION,DATASTRING,DATALOC,MYKEY,KEYLOC,KEYACTION,SALT,IV,OPSTRING,RESULTLOC)
RETURN.CODE = OPSTRING

Ниже приведены несколько строк данных, которые я обработал с помощью этого скрипта, и полученная строка:

ВХОД 05KI ВЫХОД iaYoHzxYlmM=

ВХОД 05FOAA ВЫХОД e0XB/jyE9ZM=

Когда я пытаюсь декодировать и дешифровать полученный результат с помощью онлайн-расшифровщика, я все равно не получаю результатов: https://www.tools4noobs.com/online_tools/decrypt/

Я думаю, что это может быть проблема кодировки символов или, возможно, шифрование не работает, но я не знаю, как решить - мы работали над этим несколько недель и не можем получить данные, которые могут быть расшифрованы. .

Все настройки и поля были установлены на основе этого: https://www.dropbox.com/s/ban1zntdy0q27z3/Encrypt%20Function.pdf?dl=0

1 Ответ

0 голосов
/ 17 января 2019

Если я передаю зашифрованную строку base-64 из вашего кода обратно в функцию DECRYPYT Unidata с теми же параметрами, которые она прекрасно дешифрует.

Я подозреваю, что с ключом происходит что-то смешное. На этой странице упоминается что-то вроде этого: https://u2devzone.rocketsoftware.com/accelerate/articles/data-encryption/data-encryption.html "Генерация подходящего ключа является одной из самых сложных проблем, связанных с шифрованием. Ключи следует генерировать как случайные двоичные строки, что делает их, очевидно, трудными для запоминания. Соответственно, это, вероятно, более Обычно приложения предоставляют парольную фразу для функции ENCRYPT и позволяют этой функции генерировать фактический ключ шифрования. "

Одним из вариантов удаления функции Universe ENCRYPT с картинки является непосредственное использование openSSL. Похоже, что функции ENCRYPT / DECRYPT - это просто тонкие обертки вокруг библиотеки openSSL, так что вы можете выполнить это, чтобы получить результат. У меня проблемы с php-страницей, которую вы используете для проверки, но если я передаю зашифрованную строку base-64 команде openSSL decrypt на другом компьютере, она прекрасно расшифровывается.

MYKEY="A long secret key"
DATASTRING="data to be encrypted data here"
EXECUTE '!echo "':DATASTRING:'"| openssl enc -base64 -e -rc2-cbc -nosalt -k "':MYKEY:'"' CAPTURING RESULT
...