Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security 你怎么能加密用户数据,只有他们才能解密?_Security_Cryptography - Fatal编程技术网

Security 你怎么能加密用户数据,只有他们才能解密?

Security 你怎么能加密用户数据,只有他们才能解密?,security,cryptography,Security,Cryptography,我在考虑创建一个Web应用程序,让人们输入文本(使用SSL连接),并在保存到数据库之前对其进行加密。目标是拥有它,这样只有用户才能解密它 您可以让用户输入密钥及其数据,并在希望查看数据时再次输入,而不是存储密钥。不过,这对用户来说有点痛苦 但是,如果您将密钥存储在服务器上,则可以访问该密钥,并可能解密其数据 我认为不让用户每次输入密钥或存储密钥是不可能做到的,但是有没有什么方法是我没有想到的呢?比如从只有用户知道的信息生成密钥?涉及饼干的事情?你应该调查一下。基本思想是,您可以使用只有私钥持有者

我在考虑创建一个Web应用程序,让人们输入文本(使用SSL连接),并在保存到数据库之前对其进行加密。目标是拥有它,这样只有用户才能解密它

您可以让用户输入密钥及其数据,并在希望查看数据时再次输入,而不是存储密钥。不过,这对用户来说有点痛苦

但是,如果您将密钥存储在服务器上,则可以访问该密钥,并可能解密其数据

我认为不让用户每次输入密钥或存储密钥是不可能做到的,但是有没有什么方法是我没有想到的呢?比如从只有用户知道的信息生成密钥?涉及饼干的事情?

你应该调查一下。基本思想是,您可以使用只有私钥持有者才能解密的公钥对信息进行加密。在您的场景中,服务器将记录所有用户的公钥,并使用它们来加密信息。然后,您的用户将使用他们的私钥(服务器从未看到)来解密数据


如果您正在寻找一种在客户端存储私钥的方法,您可以研究。

听起来您可以使用PGP做一些事情。如前一篇文章所述,您将拥有公钥和私钥。私钥可以由密码短语保护。这样,您就可以将私钥潜在地存储在数据库中,因为使用它仍然需要密码短语


最大的问题是,如果用户忘记了密码短语,他们可能会丢失数据。您可以通过使用备用解密密钥(ADK)绕过此问题。该密钥会自动加密所有内容,并且可以在多个人之间分割

从信息安全的角度来看,只有在用户的计算机而不是服务器上进行加密/解密时,这才有意义(因为无法保证您没有存储密钥和/或明文)。JavaScript是不可能的,因此您需要一个客户端应用程序*

此外,公钥加密在计算上也很昂贵。如果您有很多用户,并且决定在服务器上进行加密/解密,那么您可能需要记住这一点


*或者一个Java小程序,但那是90年代的事。Silverlight或Flash也可能起作用。

JS也不是不可能的。只要数据量不是很大,JS就可以了。下面是JS中RSA的一个示例:我的浏览器在页面上加密大约10毫秒,解密大约70毫秒。现在,这只是一句话,但对于基本用途来说似乎已经足够快了。无论如何,您只使用公钥加密来加密/解密随机生成的对称加密密钥(例如AES),这非常快。@Chocos:correct。除非你的明文很短。但是公钥加密仍然很昂贵。