php ошибка режима ccm openssl nounce - PullRequest
0 голосов
/ 27 мая 2020

Привет, я пытаюсь зашифровать с помощью AES-CCM-256 с помощью функции php openssl, но кажется, что у него есть ошибка, когда IV составляет 12 байтов, это приводит к неправильному тегу, точно так же, как кто-то объяснил мне здесь, в этот пост здесь

есть ли какое-либо решение или другой способ, которым я могу зашифровать aes-ccm-256 с использованием IV / nonce (12 байт) в PHP

Примечание: мне нужно использовать длину 12 байт для IV / nonce, и, к сожалению, я должен сделать это с помощью php

1 Ответ

1 голос
/ 27 мая 2020

Мне повезло с этим, используя библиотеку Openssl. Я написал библиотеку, которая включает некоторые функции шифрования и дешифрования, доступные в Openssl, чтобы, надеюсь, упростить ее.

Вот небольшой пример, который использует AES-256-CCM для шифрования и дешифрования строки с использованием 12-байтового IV :

use Encryption\Encryption;

require('../vendor/autoload.php');

$text = 'The quick brown fox jumps over the lazy dog';
$key  = 'secretkey';

$encryption = Encryption::getEncryptionObject('AES-256-CCM');
$iv = $encryption->generateIv();
$encryptedText = $encryption->encrypt($text, $key, $iv, $tag);
$decryptedText = $encryption->decrypt($encryptedText, $key, $iv, $tag);

printf('Cipher   : %s%s', $encryption->getName(), PHP_EOL);
printf('IV       : %s%s', base64_encode($iv), PHP_EOL);
printf('IV Length: %s%s', strlen($iv), PHP_EOL);
printf('Tag      : %s%s', base64_encode($tag), PHP_EOL);
printf('Encrypted: %s%s', $encryptedText, PHP_EOL);
printf('Decrypted: %s%s', $decryptedText, PHP_EOL);

Вывод:

Cipher   : AES-256-CCM
IV       : i925n5X6xdrKyImY
IV Length: 12
Tag      : b/fl4BEDAGN5U0P40/GN7g==
Encrypted: zcfFmoRKZNxxwh4z9FGaY63bl4YXYnzSxlLFEE+e9QqsMhoJjpsJ6ALH2ho+ochS
Decrypted: The quick brown fox jumps over the lazy dog

Если вам этого достаточно, библиотека называется PHP Простое шифрование и доступна как composer упаковка .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...