使用带有64位随机数的libsodium进行解密

时间:2015-09-29 18:43:24

标签: php encryption libsodium

我有一个站点设置,它从表单中获取数据并使用libsodium for php对其进行加密。由于服务器上发生了某些事情,CRYPTO_BOX_NONCEBYTES变量以某种方式返回64而不是24.我们现在有几个使用libsodium使用nonce大小64加密的文件,我们还有相关的nonce文件。有没有办法解密这个?

换句话说,我有一个用64位随机数加密的文件。当我尝试使用相同的64位nonce对其进行解密时,它会因以下错误而失败:

AppWarp SDK

1 个答案:

答案 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);
}

如果不起作用,可能还有其他问题。