转换函数进度 4GL 加密 AES OFB 128 到 PHP


Convert function Progress 4GL encrypt AES OFB 128 to PHP

需要帮助才能在 PHP 中转换以下函数。有人可以帮我吗?

OpenEdge Progress 4 GL

DEFINE VARIABLE cClearText      AS CHARACTER NO-UNDO.
DEFINE VARIABLE rBinaryKey      AS RAW       NO-UNDO.
DEFINE VARIABLE rEncryptedValue AS RAW       NO-UNDO.
DEFINE VARIABLE cEncryptedText  AS CHARACTER NO-UNDO.
ASSIGN
    cClearText = "This is the clear text string to be encrypted."
    rBinaryKey = GENERATE-PBE-KEY("password")
    SECURITY-POLICY:SYMMETRIC-ENCRYPTION-ALGORITHM = "AES_OFB_128"
    SECURITY-POLICY:SYMMETRIC-ENCRYPTION-KEY = rBinaryKey
    SECURITY-POLICY:SYMMETRIC-ENCRYPTION-IV = ?
    rEncryptedValue = Encrypt (cClearText)
    cEncryptedText = BASE64-ENCODE(rEncryptedValue)
    .
MESSAGE "Encrypted Message:" cEncryptedText
    VIEW-AS ALERT-BOX INFO BUTTONS OK.

在 PHP 中

$key = "password"; 
$text =  "This is the clear text string to be encrypted."; 
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB); 
/*$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); */
$crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_ECB, $iv); 
echo $crypttext;

但结果不一样???

这只是

我的想象,还是您使用AES_OFB_128作为OpenEdge代码的算法和PHP代码的RIJNDAEL_256?

在我看来,你应该得到一个不同的结果。

您不应该具有相同的模式和密钥大小吗? (IOW AES_ECB_256而不是OpenEdge代码中的AES_OFB_128。

更改为SECURITY-POLICY:SYMMETRIC-ENCRYPTION-ALGORITHM = "AES_CBC_128"

在 php 中:

$crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $text, MCRYPT_MODE_CBC); 
问题是将密码

转换为基于密码的加密密钥 (PBE-KEY)通过 Progress 不返回与 php 中相同的值。

4gl:

rawBinaryKey = GENERATE-PBE-KEY("pw").

在 php 上不返回相同的内容:

$key = "pw"; 

我需要知道如何通过 php 执行一个返回与"GENERATE-PBE-KEY("pw")"相同的值的函数正在返回进度 4GL。

亲切问候