我目前正在开发一个需要高级别安全性的Web应用程序,而且我一直在考虑密码处理.我应该使用散列密码,并且有足够大的盐是给定的,但使用不同的盐或不同的算法多次散列密码是有益的吗?
我不是指你应该多次散列密码来生成你的密码哈希Hash(Hash(Hash(salt + psw)))=pswhash,而是我正在考虑使用Hash(Hash(Hash(salt1 + psw)))=pswhash1和Hash(Hash(Hash(salt2 + psw)))=pswhash2,然后在登录时与两者进行比较.使用此例程,攻击者不仅必须找到生成pswhash的密码,还必须找到必须正确生成两个哈希值的密码.这样,冲突的可能性几乎为零,但攻击者可以使用第二个哈希来确定第一个哈希中的密码是否正确.
有关应用程序的其他信息:该应用程序主要是我们公司的内部应用程序.Alla连接使用https处理,所有用户名对于此应用程序都是唯一的(因此您无法选择用户名),并且所有密码对于此应用程序都是唯一的(随机生成,您无法选择它们).我们主要担心的是,在我们做出反应之前,有人会对系统进行未经授权的访问.如果我们有时间反应"他们"可以找到确切密码并不是那么大的事实.
我想创建一个具有多个“静态” TabItem(在XAML中明确键入)和多个动态添加的TabItem的TabControl。为此,我尝试使用CompositeCollection作为TabControl.ItemSource。
样例代码:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
>
<Window.Resources>
<x:Array x:Key="SomeTexts" x:Type="sys:String">
<sys:String>Text1</sys:String>
<sys:String>Text2</sys:String>
</x:Array>
</Window.Resources>
<TabControl>
<TabControl.ItemsSource>
<CompositeCollection>
<TabItem Header="Test">
<StackPanel>
<TextBlock x:Name="MyText" Text="Blah" />
<TextBlock Text="{Binding Text, ElementName=MyText}" />
</StackPanel>
</TabItem>
<CollectionContainer Collection="{StaticResource SomeTexts}" />
</CompositeCollection>
</TabControl.ItemsSource>
</TabControl>
</Window>
Run Code Online (Sandbox Code Playgroud)
此示例具有一个固定的选项卡项目和三个“动态”的选项卡项目(请注意,“ SomeTexts”是固定数组,在此只是为了简化示例;在实际代码中,它将是一个动态集合)。
该示例适用于“ ElementName”绑定,但不起作用。我想这是因为CompositeCollection不是Freezable(另请参见为什么CompositeCollection不是Freezable?)。
有没有人有解决方案?
我有这个丑陋的代码:
if ( v > 10 ) size = 6;
if ( v > 22 ) size = 5;
if ( v > 51 ) size = 4;
if ( v > 68 ) size = 3;
if ( v > 117 ) size = 2;
if ( v > 145 ) size = 1;
return size;
Run Code Online (Sandbox Code Playgroud)
如何摆脱多个if语句?
我一直玩clang一段时间,我偶然发现了"test/SemaTemplate/dependent-template-recover.cpp"(在clang发行版中),它应该提供从模板错误中恢复的提示.
整个过程可以很容易地删除到最小的例子:
template<typename T, typename U, int N> struct X {
void f(T* t)
{
// expected-error{{use 'template' keyword to treat 'f0' as a dependent template name}}
t->f0<U>();
}
};
Run Code Online (Sandbox Code Playgroud)
clang产生的错误消息:
tpl.cpp:6:13: error: use 'template' keyword to treat 'f0' as a dependent template name
t->f0<U>();
^
template
1 error generated.
Run Code Online (Sandbox Code Playgroud)
...但我很难理解究竟应该插入template关键字以使代码在语法上正确?
我试图让OCUnit对我的项目做任何事情,但我失败了:-(有什么好的教程可以让它发挥作用吗?我找到的所有内容都有不同之处,它们都非常复杂......
我试过的是例如
码:
#import <SenTestingKit/SenTestingKit.h>
@interface XTest : SenTestCase {
}
@end
@implementation XTest
- (void)testAuthentication {
STFail(@"fail");
}
Run Code Online (Sandbox Code Playgroud)
@结束
结果是,构建成功......我需要做些什么来使单元测试工作?
我必须为3个不同的案例生成随机数.一世.1个骰子ii.一对骰子iii.3我的问题:1.请建议我为所有3个案例生成随机数的良好逻辑.2.当我考虑2个骰子而不是1个时,逻辑会改变吗?3.我们必须生成一个随机数的范围会影响随机函数的逻辑吗?
英特尔TBB如何选择用于并行部分的线程数?
有某种规格吗?
我有以下代码:
ul.myList li{
border-right: 1px dotted #000;
}
Run Code Online (Sandbox Code Playgroud)
但是,在最后一个元素上,我需要删除该边框,因为我正在使用的设计指示最后一项不需要边框作为分隔符.
所以,我需要定位一个列表的最后一个孩子,所以在我的CSS中我添加了
ul.myList li:last-child{
border-right: none;
}
Run Code Online (Sandbox Code Playgroud)
众所周知,在Firefox,Safari和Chrome中都可以正常使用.
问题在于我们在Internet Explore 6到8中查看页面.
鉴于以下内容
Expression<Func<T,bool>> matchExpression;
Run Code Online (Sandbox Code Playgroud)
如何创建另一个与现有表达式"不"的表达式.
我试过了
Expression<Func<T, bool>> func3 = (i) => !matchExpression.Invoke(i);
Run Code Online (Sandbox Code Playgroud)
但实体框架不支持这个......
问候