来自 UNIVERSE/U2/PICK 的数据加密

Data Encryption from UNIVERSE/U2/PICK

我正在从 UNIVERSE 系统中提取一些数据,并希望对其进行加密以便通过电子邮件传输。

我不是 UNIVERSE 专家,所以我使用的是我们从互联网上找到的点点滴滴,它 "looks" 好像可以正常工作,但我似乎无法解密数据。

下面是我根据网上找到的代码使用的脚本:

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=

当我尝试使用在线解密器对生成的 OUTPUT 进行解码和解密时,我仍然没有得到任何结果:https://www.tools4noobs.com/online_tools/decrypt/

我认为这可能是字符编码问题,或者加密可能无法正常工作,但我不知道如何解决 - 我们已经为此工作了几周,但无法获得任何可解密的数据...

所有设置和字段均已根据此设置:https://www.dropbox.com/s/ban1zntdy0q27z3/Encrypt%20Function.pdf?dl=0

如果我使用相同的参数将您代码中的 base-64 加密字符串送回 Unidata DECRYPYT 函数,它就可以很好地解密。

我怀疑钥匙出了什么问题。此页面提到了类似的内容:https://u2devzone.rocketsoftware.com/accelerate/articles/data-encryption/data-encryption.html "Generating a suitable key is one of the thornier problems associated with encryption. Keys should be generated as random binary strings, making them obviously difficult to remember. Accordingly, it is probably more common for applications to supply a pass phrase to the ENCRYPT function and have the function internally generate the actual encryption key."

从图片中删除 Universe ENCRYPT 功能的一个选项是直接使用 openSSL。看起来 ENCRYPT/DECRYPT 函数只是 openSSL 库的薄包装,因此您可以执行它来获得结果。我在使用您用于验证的 php 页面时遇到问题,但如果我将 base-64 加密字符串提供给另一台机器上的 openSSL 解密命令,它可以很好地解密。

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