-2

需要帮助在 php.ini 中转换以下函数。任何人都可以帮助我吗?

OpenEdge 进度 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;

但结果不一样???

4

2 回答 2

4

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

在我看来,您应该得到不同的结果。

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

于 2013-10-04T18:27:16.093 回答
0

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

在 php 中:

$crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $text, MCRYPT_MODE_CBC); 

问题是通过 Progress 将密码短语转换为基于密码的加密密钥 (PBE-KEY) 不会返回与 php.ini 中相同的值。

4gl:

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

没有在 php 上返回相同的内容:

$key = "pw"; 

我需要知道如何通过 php 执行返回与 Progress 4GL 上返回的“GENERATE-PBE-KEY("pw")”相同的值的函数。

亲切的问候

于 2013-10-07T10:55:51.003 回答