我有一个Web应用程序(asp.net mvc),我需要加密一些将存储在数据库中的数据。 由于我使用BCrypt作为用户密码,我正在考虑使用它来加密其他数据......你怎么看? BCrypt是仅用于密码还是我可以将其用于其他数据?或者也许有最好的方法来做到这一点?
提前致谢!
答案 0 :(得分:3)
BCrypt不加密任何东西。它是一种在内部使用Blowfish的HASHING算法,但实际上并不加密您的数据。
主要区别:
哈希是一种算法,它采用可变大小的数据并生成该数据的固定大小表示。除非存储在别处,否则原始数据将丢失且无法检索。
加密是一种算法,它采用可变大小的数据并生成类似大小的数据块。原始数据,除非存储在别处(从而使加密的目的无效),否则将丢失。然而,它可以被检索。加密过程使用称为密钥的单独数据。如果使用相关的解密算法,相同的密钥将解密数据并且可以检索原始信息。
所以:
在任何人回答你的问题之前,你必须先了解你的要求。事实上,您是否需要存储加密的信息,或者更确切地说是哈希信息?如果您只需要存储敏感信息,但永远不需要将原始值返回给用户,那么继续使用BCrypt,因为它会哈希您的数据(从而使其不可读,但仍然具有可比性) 。另一方面,如果您希望存储有一天可能需要提供给某人的敏感信息(例如,信用卡号),那么请查看sql 加密算法。
当您探索安全世界时,您会很快发现它非常痛苦,但非常重要。例如:SLaks带来了一个好点。如果您在某处以某种方式加密数据,则需要存储密钥。但如果找到了该密钥,则有人可以窃取您的所有数据!您必须找到一种方法来正确加密数据,同时隐藏公钥。有几种方法可以做到这一点;在你提交之前谷歌一点点,因为它可能不像你想象的那么安全。
Microsoft提供了一些很好的建议:http://technet.microsoft.com/en-us/library/ms345262.aspx
您没有指定您正在使用的sql风格,因此无法提供特定于风味的答案。