-2

php で次の関数を変換するのに助けが必要です。誰でも私を助けてくれますか?

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

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 と同じ値が返されないことです。

4gl:

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

PHPで同じものを返さない:

$key = "pw"; 

「GENERATE-PBE-KEY("pw")」が Progress 4GL で返されるのと同じ値を返す関数を PHP で実行する方法を知る必要があります。

敬具

于 2013-10-07T10:55:51.003 に答える