第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

使用 OCB 模式時(shí) Openssl 解密失敗

使用 OCB 模式時(shí) Openssl 解密失敗

PHP
函數(shù)式編程 2023-10-15 15:07:40
我有一個(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è)主題的信息。
查看完整描述

1 回答

?
三國(guó)紛爭(zhēng)

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超7個(gè)贊

OCB是一種類似于 GCM 的經(jīng)過(guò)身份驗(yàn)證的加密算法,即在加密過(guò)程中生成一個(gè)標(biāo)簽,該標(biāo)簽用于在解密過(guò)程中進(jìn)行身份驗(yàn)證。OpenSSL 支持 OCB,因此高級(jí) API 的實(shí)現(xiàn)與 GCM完全等效。

此 C 代碼返回與發(fā)布的 PHP 代碼相同的密文(假設(shè)相同的明文、密鑰和隨機(jī)數(shù))。但是,C 代碼生成的標(biāo)簽不是PHP 代碼生成的。$tag它既不會(huì)附加到密文中,也不會(huì)像 GCM / CCM 那樣在第 6 個(gè)參數(shù) ( ) 中返回。后者甚至?xí)?dǎo)致錯(cuò)誤消息(無(wú)法為不支持 AEAD 的密碼提供經(jīng)過(guò)身份驗(yàn)證的標(biāo)簽)。

2014 年 5 月的PHP 錯(cuò)誤報(bào)告#67304為 GCM 提交了相同的錯(cuò)誤(盡管 GCM 位于支持的算法列表中,但未提供標(biāo)簽),這導(dǎo)致了 7.1 中對(duì) GCM 和 CCM 的支持。(2016 年 12 月發(fā)布)。在 2016 年 1 月的相關(guān) PHP RFC?OpenSSL AEAD 支持中,可以在“未來(lái)范圍一旦擴(kuò)展支持 OpenSSL 1.1,添加對(duì) OCB 模式的支持”下閱讀。

總體而言,看起來(lái) PHP 中的 OCB 可能還沒(méi)有完全實(shí)現(xiàn),就像當(dāng)時(shí)的 GCM / CCM 一樣,這最終是一個(gè)錯(cuò)誤。


查看完整回答
反對(duì) 回復(fù) 2023-10-15
  • 1 回答
  • 0 關(guān)注
  • 172 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)