小编Tgr*_*Tgr的帖子

SHA-1对密码存储是否安全?

结论: SHA-1和preimage攻击一样安全,但它很容易计算,这意味着更容易安装暴力攻击或字典攻击.(对于像SHA-256这样的后继者也是如此.)根据具体情况,设计成计算成本高的哈希函数(例如bcrypt)可能是更好的选择.


有些人会像"SHA-1被打破"那样发表评论,所以我试图理解究竟是什么意思.假设我有一个SHA-1密码哈希的数据库,一个攻击者使用最先进的SHA-1破解算法和一个拥有100,000台机器的僵尸网络可以访问它.(控制超过10万台家用计算机意味着他们每秒可以完成大约10 ^ 15次操作.)他们需要多长时间

  1. 找出任何一个用户的密码?
  2. 找出给定用户的密码?
  3. 找出所有用户的密码?
  4. 找到一种以用户身份登录的方法?
  5. 找到以特定用户身份登录的方法?

如果密码被腌制,它会如何改变?腌制的方法(前缀,后缀,两者,还是像xor-ing这样复杂的东西)是否重要?

这是我目前的理解,经过一些谷歌搜索.如果我误解了某些内容,请在答案中更正.

  • 如果没有盐,彩虹攻击会立即找到所有密码(超长密码除外).
  • 如果有足够长的随机盐,找出密码的最有效方法是暴力破解或字典攻击.碰撞和preimage攻击都没有找到实际密码的任何帮助,因此对SHA-1的加密攻击在这里没有帮助.使用什么算法甚至不重要 - 人们甚至可以使用MD5或MD4,密码也同样安全(因为计算SHA-1哈希的速度较慢).
  • 为了评估"同样安全"的安全性,我们假设单个sha1运行需要1000次操作,密码包含大写,小写和数字(即60个字符).这意味着攻击者每天可以测试10个15*60*60*24/1000~ = 10 17个潜在密码.对于暴力攻击,这意味着在3小时内测试最多9个字符的所有密码,一周最多10个字符,一年最多11个字符.(每增加一个字符需要花费60倍.)字典攻击速度要快得多(即使是一台计算机的攻击者也可以在几小时内完成它),但只能找到弱密码.
  • 要以用户身份登录,攻击者无需找到确切的密码; 它足以找到导致相同哈希的字符串.这被称为第一次原像攻击.据我所知,没有针对SHA-1的preimage攻击.(A暴力破解攻击需要2点160的操作,这意味着我们的理论,攻击者需要10 30年,把它关闭.的理论可能性的限制是大约2个60操作,在该攻击将需要几年的时间.)有原像攻击对抗缩减版本的SHA-1,效果可以忽略不计(对于使用44步而不是80步减少的SHA-1,攻击时间从2 160次操作减少到2 157次).有针对SHA-1的碰撞攻击,这在理论上是可能的(我发现最好的时间从2 80减少到2 52),但是这些对密码哈希没用,即使没有腌制.

简而言之,使用SHA-1存储密码似乎非常安全.我错过了什么?

更新:马塞洛指出了一篇文章,其中提到了2 106次操作的第二次原像攻击.(编辑:正如托马斯解释的那样,这种攻击是一种假设的结构,不适用于现实场景.)但我仍然没有看到这对于使用SHA-1作为关键的派生函数是多么危险.通常有充分的理由认为碰撞攻击或第二次原始图像攻击最终会变成第一次原始图像攻击吗?

hash cryptography sha1

146
推荐指数
4
解决办法
6万
查看次数

如何可视化XML模式?

我已经制作了一个XML Schema - 基本上都是代码 - 并且想知道代码是否可以生成这样的代码:

在此输入图像描述

如果是这样我该怎么办?

xml xsd

133
推荐指数
10
解决办法
18万
查看次数

如何使用C++为Windows应用程序创建GUI?

我正在决定如何为小型c ++/win32 api项目开发GUI(使用Visual Studio C++ 2008).该项目只需要一些组件就可以启动主流程,因此它的重量非常轻(只需一个按钮和一个文本框......).我的问题是:

我没有在Windows上开发GUI的经验,但我可以轻松学习.那么,我该怎么用?一个可视化编辑器(拖放代码生成:我对远程桌面GUI设计的偏好(java/swing)).或者我应该使用特定图书馆?无论哪种方式,我应该使用WHICH库还是可视化编辑器?我听说有人提到在C#中编写GUI,然后调用C++代码...事实是,这是一个如此简单的GUI我会发现在C++中保存它更容易,但我对任何最好的建议是.

c++ user-interface winapi visual-studio

24
推荐指数
3
解决办法
10万
查看次数

如何从维基百科信息框中提取信息?

在<some Wikipedia article>中有这个花哨的信息框.如何获得<this field and that>的值?

wikipedia structured-data wikipedia-api dbpedia wikidata

18
推荐指数
1
解决办法
5687
查看次数

在github上查找强制推送的提交者

在我们的项目(在GitHub上托管)中,有人不小心每次都强行推动主人.没有人知道是否这样做,我想知道是谁做的,以及它背后有什么样的错误配置工具或坏习惯.

所以问题是,如何识别推动力量的用户?我拉的时候看到这样的东西:

# git pull --prune
(.....)
 + 4c0d44c...138b9ed master     -> origin/master  (forced update)
Run Code Online (Sandbox Code Playgroud)

138b9ed它只是源头/主人的最新提交,并且任何人都可能在强制推动后做出承诺; 甚至可能是推力器本人没有做出任何改变,只是重新定位,所以他的名字甚至不存在于作为作者的原始/主人历史的重写部分.

我也尝试了git reflog origin/master,但它只是提供了相同的信息:有一条记录说明git pull --prune (forced update)了提交ID 138b9ed,但是这将再次将最后一个提交者提供给master,而不是那个强制推送的提交者.git reflog master在原始服务器上运行可能会有所帮助,但GitHub并没有为您提供那种访问AFAIK.

有没有可靠的方法来找出推动起源的人(何时)?

git github git-push

13
推荐指数
2
解决办法
8641
查看次数

为什么这个程序有效?

阅读这个引人入胜的问题让我想起了几个星期前我偶然发现的代码片段.它给了我很多分钟的困惑,直到我弄清楚它为什么会起作用,也许对其他人来说也会很有趣.

<?php

http://example.com/some-article
$items = get_items();
// etc.
Run Code Online (Sandbox Code Playgroud)

显然程序员想在代码块之前添加一个解释性链接作为注释,但是忘了添加//到开头.不过,代码工作正常.你能说出原因吗?

php

12
推荐指数
1
解决办法
200
查看次数

函数内部的jquery函数

是否可以在另一个函数中使用这样的函数?

function foo() {

    // do something

    function bar() {

        // do something

    }

    bar();

}

foo();
Run Code Online (Sandbox Code Playgroud)

javascript function

11
推荐指数
2
解决办法
4万
查看次数

使用PHPUnit时,全局变量为null

我将PHPUnit测试放入现有项目中.全局常量变量被广泛使用.在我的单元测试函数失败,因为全局变量为null.这是一个失败测试的例子

static $secret_key = "a secret Key";
class secret_key_Test extends PHPUnit_Framework_TestCase
{
    function test_secret_key()
    {
        global $secret_key; 
        $this->assertEquals($secret_key, "a secret Key");   
    }
}

>> Failed asserting that 'a secret Key' matches expected null
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激

更新:我尝试删除静态和添加

protected $backupGlobals = FALSE;
Run Code Online (Sandbox Code Playgroud)

对班级宣言没有成功.

php phpunit

9
推荐指数
2
解决办法
8596
查看次数

是否可以在没有DBA权限的情况下查看Oracle用户表权限?

是否可以在没有DBA权限的情况下查看用户的角色?如果是这样,怎么样?

SELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE = 'USER_NAME';
Run Code Online (Sandbox Code Playgroud)

上述查询需要"SELECT_CATALOG_ROLE"角色.

我需要在没有(DBA和SELECT_CATALOG_ROLE)权限的情况下获得上述查询的结果.

oracle privileges roles

6
推荐指数
2
解决办法
4万
查看次数

Mediawiki最好的WYSIWYG编辑器是什么?

Mediawiki最好的WYSIWYG编辑器是什么?似乎周围有许多,但不是特别用户友好(特别是像桌子这样的东西).谁知道目前最好的产品是什么?

我们主要将wiki用于文档(内部),而不是实际的encycopedia类型操作(即引用和引用不太重要).但我希望它尽可能方便用户使用 - 所以不要让用户学习维基媒体标记(wikitext)会很棒......

markup wysiwyg mediawiki editor wikitext

6
推荐指数
1
解决办法
7040
查看次数