需要帮助才能在 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。
亲切问候