これは、OpenEdge10.1BでAES-128OFBを使用して文字列を暗号化するために使用する関数です。
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キーを生成する方法がわかりません。
誰か助けてくれませんか?