程序设计

专业和发烧友程序员的问答


10
密码盐如何帮助抵抗彩虹表攻击?
我在理解对密码加盐的目的时遇到了一些麻烦。据我了解,主要用途是阻止彩虹表攻击。但是,我见过的实现此问题的方法似乎并没有真正使问题变得更难。 我看过许多教程建议将盐用于以下用途: $hash = md5($salt.$password) 原因是哈希现在不映射到原始密码,而是密码和盐的组合。但是说$salt=foo和$password=bar和$hash=3858f62230ac3c915f300c664312c63f。现在,拥有彩虹表的人可以反转哈希并提出输入“ foobar”。然后,他们可以尝试所有密码组合(f,fo,foo,... oobar,obar,bar,ar,ar)。可能需要花费几毫秒的时间才能获取密码,但除此之外没有多少其他信息。 我见过的另一种用法是在我的linux系统上。在/ etc / shadow中,哈希密码实际上与 salt 存储在一起。例如,盐“ foo”和密码“ bar”将散列为此:$1$foo$te5SBM.7C25fFDu6bIRbX1。如果黑客以某种方式能够获得此文件,那么我就看不到salt的用途是什么,因为te5SBM.7C25fFDu6bIRbX已知的反向哈希包含“ foo”。 感谢您提供的任何信息。 编辑:感谢您的帮助。总而言之,盐使散列密码变得更加复杂,因此使其不太可能存在于预先计算的彩虹表中。我之前误解的是我以为所有哈希都存在一个彩虹表。

19
如何在Shell脚本中解析符号链接
给定绝对路径或相对路径(在类Unix系统中),我想在解决所有中间符号链接后确定目标的完整路径。同时解决〜username表示法的奖励点。 如果目标是目录,则可以将chdir()进入目录,然后调用getcwd(),但我真的很想从shell脚本中执行此操作,而不是编写C帮助程序。不幸的是,shell倾向于尝试向用户隐藏符号链接的存在(在OS X上是bash): $ ls -ld foo bar drwxr-xr-x 2 greg greg 68 Aug 11 22:36 bar lrwxr-xr-x 1 greg greg 3 Aug 11 22:36 foo -> bar $ cd foo $ pwd /Users/greg/tmp/foo $ 我想要的是一个resolve()函数,以便在上述示例中的tmp目录中执行时,resolve(“ foo”)==“ / Users / greg / tmp / bar”。
220 bash  shell  scripting  symlink 


7
在Swift中遍历字典
我对Xcode在《 Swift编程语言指南》中给我进行此实验的答案感到有些困惑: // Use a for-in to iterate through a dictionary (experiment) let interestingNumbers = [ "Prime": [2, 3, 5, 7, 11, 13], "Fibonacci": [1, 1, 2, 3, 5, 8], "Square": [1, 4, 9, 16, 25] ] var largest = 0 for (kind, numbers) in interestingNumbers { for number in …
220 dictionary  swift 


6
Redux-多家商店,为什么不呢?
注意:我已经阅读了Redux(Baobab,也是如此)的文档,并且做了很多Google搜索和测试工作。 为什么强烈建议Redux应用程序只有一个商店? 我了解单商店设置与多商店设置的优缺点(关于此主题,有很多关于SO的问答)。 IMO,这个架构决定是基于应用程序开发人员的项目需求。那么,为什么如此强烈地建议Redux使用,几乎达到强制性的程度(尽管没有什么阻止我们开设多个商店)? 编辑:转换为单店后的反馈 在与redux一起工作了几个月后,许多人认为它是复杂的SPA,我可以说单一的商店结构让我感到很高兴。 以下几点可能会帮助其他人理解为什么在许多很多用例中,单商店还是多商店是一个有争议的问题: 可靠:我们使用选择器来挖掘应用程序状态并获取与上下文相关的信息。我们知道所有需要的数据都在一个存储中。它避免了所有关于国家问题可能在哪里的质疑。 速度很快:我们的商店目前有将近100个减速器,如果没有更多的话。即使达到这个数量,也只有极少数的减速器在任何给定的调度上处理数据,其他的只是还原以前的状态。关于大型/复杂存储(reducers的nbr)缓慢的说法几乎没有意义。至少我们还没有看到任何性能问题。 调试友好:虽然这是整体上使用redux的最有说服力的参数,但对于单商店还是多商店也是如此。在构建应用程序时,您一定会在过程中出现状态错误(程序员错误),这很正常。PITA是那些错误需要数小时才能调试的时候。多亏了单一存储(和redux-logger),我们从未在任何给定的状态问题上花费超过几分钟的时间。 一些指针 建立您的redux商店的真正挑战是决定如何构建它。首先,因为改变结构只是一个主要的痛苦。其次,因为它在很大程度上决定了您的使用方式,并为任何过程查询应用数据。关于如何构建商店有很多建议。在我们的案例中,我们发现以下是理想的: { apis: { // data from various services api1: {}, api2: {}, ... }, components: {} // UI state data for each widget, component, you name it session: {} // session-specific information } 希望此反馈对其他人有帮助。 编辑2-有用的商店工具 对于那些一直想知道如何“轻松”管理一家商店的人来说,这可能会很快变得复杂。有一些工具可以帮助隔离商店的结构依赖性/逻辑。 有Normalizr可以根据架构对数据进行标准化。然后,它提供了一个界面来处理您的数据,并通过来获取数据的其他部分id,就像一个Dictionary。 当时我还不了解Normalizr,所以我沿相同的思路建立了一些东西。Relational-json采用一个模式,并返回一个基于Table的接口(有点像一个数据库)。Relational-json的优点是您的数据结构可以动态引用数据的其他部分(本质上,您可以像正常的JS对象一样在任何方向上遍历数据)。它不如Normalizr成熟,但是我已经在生产中成功使用了几个月。
220 javascript  redux 

5
如何在CMake文件中添加链接器或编译标志?
我正在使用arm-linux-androideabi-g++编译器。当我尝试编译一个简单的“ Hello,World!”时 程序可以编译良好。当我通过在该代码中添加简单的异常处理来对其进行测试时,它也可以工作(添加-fexceptions.. 后,我认为默认情况下它是禁用的)。 这是针对Android设备的,我只想使用CMake,而不是ndk-build。 例如 - first.cpp #include <iostream> using namespace std; int main() { try { } catch (...) { } return 0; } ./arm-linux-androideadi-g++ -o first-test first.cpp -fexceptions 没问题... 问题 ...我试图用CMake文件编译文件。 我想将其添加-fexceptions为标志。我尝试过 set (CMAKE_EXE_LINKER_FLAGS -fexceptions ) or set (CMAKE_EXE_LINKER_FLAGS "fexceptions" ) 和 set ( CMAKE_C_FLAGS "fexceptions") 它仍然显示错误。
220 c++  cmake 


2
在ggplot中关闭一些图例
假设我有一个不止一个图例的ggplot。 mov <- subset(movies, length != "") (p0 <- ggplot(mov, aes(year, rating, colour = length, shape = mpaa)) + geom_point() ) 我可以像这样关闭所有图例的显示: (p1 <- p0 + theme(legend.position = "none")) 传递show_guide = FALSE给geom_point(根据此问题)将关闭形状图例。 (p2 <- ggplot(mov, aes(year, rating, colour = length, shape = mpaa)) + geom_point(show_guide = FALSE) ) 但是,如果我想关闭颜色图例怎么办?似乎没有一种方法可以告诉show_guide哪个图例对其行为应用。而且没有show_guide尺度或美学的论据。 (p3 …
220 r  ggplot2 



7
Python和IPython有什么区别?
Python和IPython之间到底有什么区别? 如果我用Python编写代码,它是否可以按原样在IPython中运行还是需要进行修改? 我知道IPython应该是Python的交互式外壳,但仅此而已?还是有一种叫做IPython的语言?如果我在IPython下编写某些内容,它将在Python中运行,反之亦然吗?如果存在差异,我怎么知道它们是什么?Python使用的所有软件包都可以像在IPython中那样工作吗?
220 python  ipython 

9
Mockito。验证方法参数
我已经对此进行了谷歌搜索,但是没有发现任何相关信息。我有这样的事情: Object obj = getObject(); Mockeable mock= Mockito.mock(Mockeable.class); Mockito.when(mock.mymethod(obj )).thenReturn(null); Testeable testableObj = new Testeable(); testableObj.setMockeable(mock); command.runtestmethod(); 现在,我要验证的mymethod(Object o)是内部runtestmethod()调用了,是通过Object调用的o,而不是其他对象。但是无论我进行哪种验证,我都会始终通过测试,例如: Mockito.verify(mock.mymethod(Mockito.eq(obj))); 要么 Mockito.verify(mock.mymethod(Mockito.eq(null))); 要么 Mockito.verify(mock.mymethod(Mockito.eq("something_else"))); 我总是通过考试。我如何完成该验证(如果可能)? 谢谢。

6
正则表达式用小写字母替换大写
我正在尝试使用正则表达式将大写字母替换为相应的小写字母。以便 EarTH: 1, MerCury: 0.2408467, venuS: 0.61519726, 变成 earth: 1, mercury: 0.2408467, venus: 0.61519726, 在崇高文字中。如何仅在同时包含大写和小写字母的单词中对字母进行小写?因此它影响venUs而不是VENUS。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.