0

这是我的第一个问题。任何人都可以看到 mega.co.nz 对数据使用高级加密,就像 truecrypt 一样。我有一个算法,它使用原始文本和密钥作为参数来加密字符串:

function fnEncrypt($Value, $SecretKey)
{
    return rtrim(
        base64_encode(
            mcrypt_encrypt(
                MCRYPT_RIJNDAEL_256,
                $sSecretKey, $sValue, 
                MCRYPT_MODE_ECB, 
                mcrypt_create_iv(
                    mcrypt_get_iv_size(
                        MCRYPT_RIJNDAEL_256, 
                        MCRYPT_MODE_ECB
                    ), 
                    MCRYPT_RAND)
                )
            ),
        );
}

这两个参数,由用户给定。在 mega.co.nz 上,使用鼠标会自动生成一个密钥,该密钥会加密所有内容。我怎么能做这样的事情?以及 mega.co.nz 或其他具有相同安全性的站点如何将此密钥存储在数据库中?在数据库上拥有这个密钥是不安全的,不是吗?此外,如果最大文本为 250 个字符,加密时间会更长吗?我们可以计算出一个密文的长度吗?使用最大原始字符串,250 个字符。

我打算开发一种算法来使 URL 最短以节省空间,但这没有价值,因为原始 URL 也必须存储在数据库中?先感谢您。

4

1 回答 1

0

没错,mega.co.nz 确实使用加密所有用户上传的数据。我相信他们使用 AES(可能是 128 位长度)算法来加密 CLIENT 端的数据。换句话说,JavaScript 在将所有用户数据上传到 Mega 的服务器之前对其进行加密。

密钥是自动生成的,但它不会存储在 Mega 的服务器上——这就是使这项服务如此独特的原因。生成密钥,JavaScript 使用密钥对用户数据进行加密,加密后的数据上传到 Mega。最后,用户将获得一个可用于检索文件的 URL。URL 是包含加密密钥的内容。Mega 不会将密钥存储在他们的数据库中,这就是他们确保加密数据安全的方式。

只有拥有正确 URL 的人才能获取和解密上传的数据。

于 2013-10-30T20:10:20.667 回答