0

フォームからデータを取得し、php の libsodium を使用して暗号化するサイトをセットアップしています。サーバーで何かが発生したため、どういうわけか CRYPTO_BOX_NONCEBYTES 変数が 24 ではなく 64 を返しました。現在、64 の nonce サイズを使用して libsodium で暗号化されたいくつかのファイルがあり、関連する nonce ファイルもあります。これを解読する方法はありますか?

つまり、64 ビットの nonce で暗号化されたファイルがあります。同じ 64 ビットナンスで復号化しようとすると、次のエラーで失敗します。

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

1 に答える 1

1

確かに、有効な暗号文、鍵ペア、および 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);
}

うまくいかない場合は、他に問題がある可能性があります。

于 2015-09-30T17:32:02.527 に答える