使用 OCB 模式時(shí) Openssl 解密失敗
我有一個(gè) PHP 庫(kù),它是 Openssl 的包裝器,其目標(biāo)是讓新開(kāi)發(fā)人員默認(rèn)情況下更簡(jiǎn)單、更安全地加密和解密數(shù)據(jù)。該庫(kù)成功處理許多不同的密碼和模式,但我無(wú)法讓 OCB 模式正常工作。我似乎能夠毫無(wú)問(wèn)題地加密數(shù)據(jù),但當(dāng)我嘗試解密時(shí),它openssl_decrypt()會(huì)返回false。當(dāng)我檢查openssl_error_string()任何錯(cuò)誤消息時(shí),沒(méi)有任何錯(cuò)誤消息。AES-128-CBC下面是一個(gè) MVCE,演示了使用和執(zhí)行相同的代碼AES-128-OCB。該AES-128-CBC示例按預(yù)期工作。沒(méi)有AES-128-OCB任何跡象表明失敗的原因。(我在示例中特意使用了 16 個(gè)字符的純文本字符串,以從方程中刪除空填充)。$ciphers = [ 'AES-128-CBC', 'AES-128-OCB'];$key = 'secretkey';$plainText = 'Testing testing!';foreach ($ciphers as $cipher) { printf('Cipher: %s%s', $cipher, PHP_EOL); $iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length($cipher)); printf('IV: %s%s', $iv, PHP_EOL); printf('Text: %s%s', $plainText, PHP_EOL); $encryptedText = openssl_encrypt($plainText, $cipher, $key, OPENSSL_RAW_DATA, $iv); printf('Encrypted Text: %s%s', $encryptedText, PHP_EOL); $encodedText = base64_encode($encryptedText); printf('Encoded Text: %s%s', $encodedText, PHP_EOL); $decodedText = base64_decode($encodedText); printf('Decoded Text: %s%s', $decodedText, PHP_EOL); $decryptedText = openssl_decrypt($decodedText, $cipher, $key, OPENSSL_RAW_DATA, $iv); printf('Decrypted Text: '); var_dump($decryptedText); while ($msg = openssl_error_string()) { printf('Openssl Error: %s%s', $msg, PHP_EOL); } printf('%s%s', str_repeat('-', 60), PHP_EOL);}輸出:Cipher: AES-128-CBCIV: ?K?K?l4.?4;yText: Testing testing!Encrypted Text: vg??~6?D??R?????xd?^?,?[??p"~Encoded Text: dgUIZ5itfjazRLTiUvzIxsjNeGScXqksjFsaq7pwIn4=Decoded Text: vg??~6?D??R?????xd?^?,?[??p"~Decrypted Text: string(16) "Testing testing!"------------------------------------------------------------Cipher: AES-128-OCBIV: ??)?????XText: Testing testing!Encrypted Text: m??i??B[?d?Encoded Text: BW2IkWmo5kJbFgYf8YdkpQ==Decoded Text: m??i??B[?d?Decrypted Text: bool(false)------------------------------------------------------------我不是加密方面的專家,但在從事這項(xiàng)工作時(shí)學(xué)到了很多知識(shí)。我在 google 上搜索了 OCB 模式,并讓它與 PHP 和 Openssl 一起工作,但幾乎沒(méi)有關(guān)于這個(gè)主題的信息。
查看完整描述