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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么在 python 中解密時,解密在 php 中生成的字符串會部分起作用?

為什么在 python 中解密時,解密在 php 中生成的字符串會部分起作用?

PHP
青春有我 2022-10-14 16:13:16
我正在開發(fā)小型應(yīng)用程序,但在 python 中解密數(shù)據(jù)時遇到問題。首先,我使用以下代碼在 php 中使用 AES-256-CBC 加密字符串: function EncryptAES($data){        global $KEY;        $ivlen = openssl_cipher_iv_length("aes-256-cbc");        $iv = openssl_random_pseudo_bytes($ivlen);        $ciphertext = openssl_encrypt($data, "aes-256-cbc", $KEY, NULL, $iv);        return $ciphertext;    }現(xiàn)在 openssl_encrypt 返回 base64 字符串(因為我使用NULL作為第四個變量)之后我嘗試在 python 中解密它,但它只返回字符串的最后一部分。這是python代碼:BS = 16pad = lambda s: s + (BS - len(s) % BS) * chr(BS - len(s) % BS)unpad = lambda s : s[0:-s[-1]]class AESCipher:    def __init__( self, key ):        self.key = hashlib.sha256(key.encode('utf-8')).digest()    def decrypt( self, enc ):        enc = base64.b64decode(enc)        iv = enc[:16]        cipher = AES.new(self.key, AES.MODE_CBC, iv )        return unpad(cipher.decrypt( enc[16:] ))def Decrypt(data):    cipher = AESCipher(KEY)    decrypted = cipher.decrypt(data).decode('UTF-8')    return decrypted當(dāng)然KEY變量與服務(wù)器上的相同?,F(xiàn)在,在使用加密數(shù)據(jù)運行Decrypt()函數(shù)后,它只返回解密字符串的一部分。
查看完整描述

1 回答

?
叮當(dāng)貓咪

TA貢獻1776條經(jīng)驗 獲得超12個贊

好的,問題解決了!對于任何想知道的人,您需要在 php.ini 中預(yù)先附加 IV。默認的 openssl_encrypt 不添加它。


這是代碼:


$ciphertext = openssl_encrypt($data, "aes-256-cbc", $KEY, OPENSSL_RAW_DATA, $iv);

$DATA = base64_encode($iv.$ciphertext);


查看完整回答
反對 回復(fù) 2022-10-14
  • 1 回答
  • 0 關(guān)注
  • 119 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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