1

我有一个 Web 应用程序(asp.net mvc),我需要加密一些将存储在数据库中的数据。由于我使用 BCrypt 作为用户密码,我正在考虑使用它来加密其他数据……你怎么看?BCrypt 仅用于密码还是我也可以将其用于其他数据?或者也许有最好的方法来做到这一点?

提前致谢!

4

1 回答 1

6

BCrypt 不加密任何东西。它是一种在内部使用 Blowfish 的 HASHING 算法,但实际上并不加密您的数据。

主要区别:

散列是一种算法,它采用可变大小的数据并生成该数据的固定大小表示。除非存储在其他地方,否则原始数据会丢失并且无法检索。

加密是一种算法,它采用可变大小的数据并生成类似大小的数据块。除非存储在其他地方(从而使加密目的无效),否则原始数据将丢失。但是,它可以被检索。加密过程使用称为Key的单独数据片段。如果使用相关的解密算法,相同的密钥将解密数据并且可以检索原始信息。

所以:

在任何人回答您的问题之前,您必须先了解您在问什么。事实上,您是否需要存储加密信息,或者更确切地说是散列信息?如果您只需要存储敏感信息,但不需要将原始值返回给用户,请继续使用 BCrypt,因为它会散列您的数据(从而使其不可读,但仍可比较)。另一方面,如果您想要存储您有一天可能需要提供给某人的敏感信息(例如,信用卡号),那么请查看 sql加密算法。

当你探索安全的世界时,你会很快发现它很痛苦,但也很重要。例如:SLaks 提出了一个很好的观点。如果您以某种方式加密您的数据,您需要存储您的密钥。但是,如果找到该密钥,那么有人可以窃取您的所有数据!您必须找到一种方法来正确加密您的数据,同时向公众隐藏密钥。有几种方法可以做到这一点;在你承诺之前先谷歌一下,因为它可能不像你想象的那么安全。

微软有一些很好的建议:http ://technet.microsoft.com/en-us/library/ms345262.aspx

您没有指定您使用的 sql 的风格,因此无法提供特定于风格的答案。

于 2013-07-09T15:49:28.363 回答