Расшифровка с помощью libsodium с помощью 64-битного одноразового номера

У меня есть сайт, который берет данные из формы и шифрует их, используя libsodium для php. Из-за того, что произошло на сервере, переменная CRYPTO_BOX_NONCEBYTES вернула 64 вместо 24. Теперь у нас есть несколько файлов, которые зашифрованы с помощью libsodium с использованием размера nonce 64, и у нас также есть связанные файлы nonce. Есть ли способ расшифровать это?

Другими словами, у меня есть файл, который был зашифрован с 64-разрядным одноразовым номером. Когда я пытаюсь расшифровать его с тем же 64-битным одноразовым номером, происходит сбой со следующей ошибкой:

PHP Fatal error:  crypto_box_open(): nonce size should be CRYPTO_BOX_NONCEBYTES long in /data/www/docroot/filename.php on line 42

0

Решение

Конечно, при наличии действительного зашифрованного текста, пары ключей и вашего 64-байтового одноразового номера вы должны быть в состоянии сделать это:

// Keep increasing this from 0 to 39 to see if you can grab the
// correct slice of the nonce string:
$try = 0;

// Then run the rest of the code and hope you didn't get a fatal error.
$substr = mb_substr($your_64byte_nonce, $try, $try + \Sodium\CRYPTO_BOX_NONCEBYTES, '8bit');
$decrypted = \Sodium\crypto_box_open($message, $substr, $keypair);
if ($decrypted !== false) {
echo $decrypted, "\n";
echo "The magic slicing point is {$try}.\n";
} else {
exit(1);
}

Если это не сработает, могут быть и другие проблемы.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]