我正在从UNIVERSE系统中提取一些数据,并希望对其进行加密以通过电子邮件进行传输。
我不是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
答案 0 :(得分:1)
如果我使用相同的参数将您代码中的以base-64加密的字符串返回到Unidata DECRYPYT函数中,则可以解密。
我怀疑钥匙正在发生有趣的事情。该页面提到了类似的内容:https://u2devzone.rocketsoftware.com/accelerate/articles/data-encryption/data-encryption.html“生成合适的密钥是与加密相关的棘手问题之一。密钥应以随机二进制字符串的形式生成,显然使它们难以记住。因此,它可能更常见供应用程序向ENCRYPT函数提供密码短语并让该函数在内部生成实际的加密密钥。”
从图片中删除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