- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
如果我的任何假设不正确,请纠正我。
当您使用 sha1 散列某些内容时,您无法反转散列数据以获取原始字符串。
正因为如此,如果我有一个电子邮件,我以后需要使用它,存储在数据库中,我不能对它使用 sha1。
但是,我仍然想在发生违规时进行保护,那我该怎么办?
我正在使用将 secret_key 存储在 settings.py 中的 django。
我尝试使用 AES 加密,但注意到编码的字符串越长,返回的加密字符串越长,这是有道理的。但是,加密字符串比原始字符串长得多。是否存在一种加密类型,其中返回的字符串与原始字符串的大小相同?因为我使用的是 django 用户模型并且电子邮件限制为 75,所以如果用户使用 32-75char 的电子邮件,则加密字符串的长度为 128,即 > 75,因此无法将其存储在列中。
最佳答案
三个key concepts of information security是 secret 性、完整性和可用性。在您的情况下,像 SHA1 这样的加密散列提供完整性:您始终可以检查散列值以查看电子邮件是否已被篡改。在您的情况下,您需要保密性,哈希函数无法提供:您希望电子邮件在数据库中不可读,以防数据库遭到破坏。虽然对称加密算法是答案的一部分,但更大的问题是关于 key 管理。一旦你有了加密和解密电子邮件的 key ,你将如何存储它?有多少人可以获得 key ?它会与数据库保存在同一台计算机上吗? (那很危险。)它会保持在同一个网络上吗?你多久换一次 key ?如果你丢失了 key 会怎样?很有可能,您的基础设施与未加密的电子邮件一样容易受到数据泄露的影响。安全性很难,最好将您的精力集中在审核数据库设置上——这是许多人已经做过的事情,具有众所周知且经过生产测试的解决方案——而不是创建复杂的加密系统。
关于html - 您如何保护不想散列的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6803002/
我的应用程序中有一个 IList 站点,并且站点有大量属性。 我想将此列表转换为 JSON,以便在类似于此的下拉列表中使用 var sites = SiteRepository.FindAll
我正在将一些代码从 bluebird 切换到原生 Promises,并且我对原生 promises 吞下错误这一事实感到相当恼火,即使没有定义 .catch() 也是如此。它使调试变得不可能,除非您在
在同步访问共享资源时,是否有理由不使用读/写锁而不是普通的互斥锁(基本上只是写锁),除了它具有比我可能需要的更多功能的哲学原因? 换句话说,如果我只是默认使用读/写锁作为我首选的同步结构,我是不是在踢
我刚进入这个元素,代码已经写好了,但我们发现了一个问题。当您单击菜单中的任何位置时,它会变成金色,您看不到菜单该部分中的任何链接。您可以再次单击它,它将返回到正常状态。这只发生在 Internet E
这是一个简单的类和简单的测试函数: #include #include namespace { using namespace std; } class NameStream {
我有一个 std::vector其中 Foo是一个包含 Foo( Foo&& ) noexcept 的类. 向容器中添加对象完美无缺,但是使用 std::vector::erase( iterator
我正在通过这段代码使用各种浏览器尝试 localStorage 和 JSON: function getStorage() { stored = JSON.pa
您可能认为此问题与 Running two projects at once in Visual Studio 完全相同.不完全是,恰恰相反。 我有一个带有两个 MVC3 项目的 VS 2010 解决
我正在制作一个网站:http://arc-angyal.hu/ 我的第一个问题是,我无法让左侧的红色 div 足够高以填充页眉和页脚之间的空间。它位于标题之后和导航之前。我已经设置: html, bo
根据 This Question ,我正在使用线程来终止用户输入的函数。我的代码看起来像: bool stopper = false; thread stopThread(userStop, &sto
我是一名优秀的程序员,十分优秀!