我有一个站点设置,它从表单中获取数据并使用libsodium for php对其进行加密。由于服务器上发生了某些事情,CRYPTO_BOX_NONCEBYTES变量以某种方式返回64而不是24.我们现在有几个使用libsodium使用nonce大小64加密的文件,我们还有相关的nonce文件。有没有办法解密这个?
换句话说,我有一个用64位随机数加密的文件。当我尝试使用相同的64位nonce对其进行解密时,它会因以下错误而失败:
AppWarp SDK
答案 0 :(得分: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);
}
如果不起作用,可能还有其他问题。