2

我正在从 U2 系统发送加密的测试数据,以查看是否可以处理和利用它来提高安全性。

U2中生成加密测试数据的SUBROUTINE为:

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

正在生成和加密的数据是:

[RAWDATA] => Array
    (
        [196346] => 05FOAA
        [196347] => 05KI
        [196328] => 99FOZZ16S10
    )
[ENCRYPTED] => Array
    (
        [196346] => e0XB/jyE9ZM=
        [196347] => iaYoHzxYlmM=
        [196328] => BS/YmNtlzI95c9NLpl4JVHLJwI/MO3zJm6FKVqu2tcM=
    )

我在 PHP 中使用 openssl_decrypt 使用相同的信息:

$encdata = array_value;
$encryptionMethod = ALGORITHM; //"rc2-cbc"
$encryptionKey = MYKEY;//"23232323"
$options = 0;
$iv = IV; //"12121212"

$decryptedMessage = openssl_decrypt( $encdata, $encryptionMethod, $encryptionKey, $options, $iv ); 

返回值:bool(false)

我尝试了 $options 的不同组合,并尝试自己加密相同的数据,但得到了不同的结果。

我必须等待 24 小时才能获得包含任何更改的新文件,所以我想尽可能多地掩盖问题。

我已经阅读了文档,我觉得以下可能是问题:

  1. ACTION=5,我只能从 U2 文档中找到 4 个潜在选项 - 1 - 加密,2 - 加密,Base64 编码,3 - 解密,4 - Base64 解码,然后解密 - 就这么简单是错误的吗?我希望如此,但想涵盖任何其他可能的问题
  2. $encda​​ta - 我尝试过使用 OPENSSL_RAW_DATA 和 0 ,但我无法分辨,因为 ACTION=5 既不是 Encrypt OR Encrypt & base64 编码
  3. $encryptionMethod - 我不认为 rc2-cbc 是我服务器上 PHP 中的有效选项,但不能明确地说 - 我建议将其更改为 AES256
  4. $encryptionKey - 可以是 8 个字符的字符串吗?它是否需要是特定的长度并且需要是二进制的?(文档有冲突的信息)
  5. $iv - 与上述相同 - 8 个字符和非二进制可以吗?

在我将其发送到隔夜更新之前的任何其他见解将不胜感激。

PHP Fiddle 测试: http: //phpfiddle.org/main/code/ixax-umq3

4

0 回答 0