Mon code fonctionne si je tapote manuellement ma chaîne à la longueur de 32.
Ma question est la suivante: Y a-t-il un moyen de rendre le pavé openSSL les données, ou dois-je toujours le faire pour cela?Comment est-ce que openssl_encrypt remplit l'entrée à la taille de bloc requise?
travail:
openssl_encrypt ("my baba is over the ocean1111111", 'AES-256-CBC', $MY_SECRET_KEY,OPENSSL_RAW_DATA|OPENSSL_ZERO_PADDING,$MY_IV);
ne fonctionne pas:
openssl_encrypt ("my baba is over the ocean", 'AES-256-CBC', $MY_SECRET_KEY,OPENSSL_RAW_DATA|OPENSSL_ZERO_PADDING,$MY_IV);
Je résous ce moment par l'auto padding:
$pad = 32 - (strlen("my baba is over the ocean") % 32);
$clear = "my baba is over the ocean" . str_repeat(chr($pad), $pad); //encrypt this string
La taille du bloc est requis pour AES 16. Je devine que votre choix de rembourrage de 0 est confondant la machine. – jww
Ne pouvez-vous pas utiliser intentionnellement PKCS5 comme système de remplissage à la place de l'endroit où vous avez actuellement un remplissage nul? –
@LukePark est-il un moyen intégré de le faire? btw -> remarque je pad le bloc moi-même et pas avec des zéros –