我想创建一个网站,在那里用户输入内容(说几句话),这些内容最终会存储在后端数据库(可能是MySQL)中。但在内容离开客户端之前,我希望在客户端使用javascript之类的东西对其进行加密。
数据将通过加密的网络传输,但更重要的是,还将永久存储在加密的后端数据库中。
JavaScript适合用于此目的吗?256位加密会花费太长时间吗?
另外,如果您想要拉下用户在过去两个月内提交的内容,您如何查询加密的数据库?
我正在寻找关于如何学习和实现这一点的提示,建议和任何你们可能有的指针。
谢谢!
发布于 2011-01-04 15:21:42
您不应该自己为客户端和服务器之间的通信实现加密,而是使用SSL (https)。至于加密数据库中的数据,您始终可以使用MySQL的内置方法,如AES_ENCRYPT和AES_DECRYPT,详情请参阅reference manual。
发布于 2011-01-04 03:56:25
好吧,需要指出的是:如果它是客户端加密的,那么它很可能也很容易被解密,就像javascript这样的语言一样,它们被交给了你的加密方案的源代码。有很多加密方案,AES,Blowfish等,但如果数据在加密的连接上传输,我认为数据的加密只会增加很少的安全性,可能是本地安装的数据包嗅探器或其他类似的东西。
我还建议你也考虑使用压缩,我自己也使用过LZMA,Huffman,甚至base64编码和javascript,以至少使不知名的观察者看不到内容。重点是,无论加密有多好,你都可以把这个过程交给客户,他们就可以查看你的源代码,并且能够轻松地逆转加密,因为他们知道加密方案,并且不会懒得在维基百科上搜索或搜索。我个人更喜欢压缩,因为它还可以减少正在发送的数据的大小,而且除非一个人经过加密和压缩分析的培训,否则从嗅探数据包中找出正在使用的压缩并不容易。
编辑:但如果您想要高级别的安全性,我建议不要只使用压缩,而是对在服务器和客户端之间传输的数据使用非对称加密方法,如RSA或Diffie-Hellman加密,因为私钥永远不会被共享。
对于客户端,javascript或更好的Java应用程序可以工作(至少你不能在两秒钟内用Java应用程序右键单击->查看源代码)。如果你只是想像你说的那样节省几句话,256位加密不会花太长时间。一个现代的处理器,只需几毫秒就能处理完。然后,当数据到达服务器时,在将其发送到数据库之前,使用AES或其他强大的算法对其进行加密(请注意,美国政府对其最高机密文档使用AES 256 )。(还要补充的是,您还可以在单独的数据库中存储数据的散列(MD5是一个在PHP中随时可用的函数,您也可以选择Whirlpool之类的函数,但您必须为此找到一个库),并在访问它时进行检查,以确保您的数据库没有受到损害)。
对于查询,我建议使用PHP。读取数据,将其解密,然后发送给客户端(仍以加密的形式),或者如果您愿意,如果您不信任发送数据所经过的网络,则让客户端也对其进行解密。
这里有一个关于Javascript和AES的很好的源码:在javascript中使用RSA http://point-at-infinity.org/jsaes/我保存的两个链接:http://www.ohdave.com/rsa/和http://www.hanewin.net/encrypt/rsa/rsa.htm
发布于 2011-01-04 03:56:28
看看http://www.farfarfar.com/scripts/encrypt/ (加密/解密)。
已成功尝试text/text/XXTEA。
但是,JS加密只能做到这一点。
只要你不使用SSL/https,主要的缺点是:
关于在加密数据上搜索/提取数据,我认为没有什么是可行的。
https://stackoverflow.com/questions/4587743
复制相似问题