这是我在 OpenEdge 10.1B 中使用 AES-128 OFB 加密字符串的函数:
DEFINE VAR cRes AS CHAR INITIAL ? NO-UNDO.
DEFINE VAR rKey AS RAW NO-UNDO.
DEFINE VAR rEnc AS RAW NO-UNDO
rKey = GENERATE-PBE-KEY(cEncKey).
eEnc = ENCRYPT(cData, rKey, ?, "AES_OFB_128").
cRes = BASE64-ENCODE(rEnc) NO-ERROR.
IF ERROR-STATUS::ERROR THEN cRes = ?.
return cRes.
此功能确实可以很好地加密。
当我想用下面的 PHP 解密它时,它会失败,例如它给我的结果与原始字符串不同。
// decrypted: original string is supposed to have 33 characters
$encrypted = "YnRvNjIG1kj1QtUM9ZYuVYS3D4LBYCEsprjg2QCaD/eM";
$key = "27Zkp6Wq";
$method = 'aes-128-ofb';
# do decryption
echo "<pre>".openssl_decrypt(base64_decode($encrypted), $method, $key, false)."</pre>";
我知道这可能与 GENERATE-PBE-KEY 函数有关,但我看不到如何在 PHP 中生成 PCKS#5 密钥。
有人可以帮帮我吗?