如何知道用户选择在innosetup中安装设置的语言?我使用innosetup 5.3打包我的应用程序,它是一个多语言应用程序,所以如果我知道用户选择安装软件包的语言将是有用的.提前致谢.
在构建我希望的是一个正确架构的身份验证机制的过程中,我遇到了很多指定的材料:
我完全同意第一点和第二点,但似乎后者有一个简单的解决方法.而不是做相当于(伪代码):
salt = random();
hashedPassword = hash(salt . password);
storeUserRecord(username, hashedPassword, salt);
Run Code Online (Sandbox Code Playgroud)
为什么不使用用户名的哈希作为盐?这产生了一个分布均匀(大致)随机的盐的区域,并且每个单独的盐与盐功能所提供的一样复杂.更好的是,您不必将salt存储在数据库中 - 只需在身份验证时重新生成它.更多伪代码:
salt = hash(username);
hashedPassword = hash(salt . password);
storeUserRecord(username, hashedPassword);
Run Code Online (Sandbox Code Playgroud)
(当然,hash在上面的例子中应该是合理的,比如SHA-512,或者其他一些强哈希.)
这对我来说似乎是合理的,因为我知道加密的内容很少(但很少),但事实上这是对广泛推荐的练习的简化,这让我想知道是否有一些明显的原因让我误入歧途,我不知道.
编辑有些人似乎没有意识到问题是什么.我无法建议不使用盐.参考TheRook的编辑答案:我熟悉那些CWE中提到的参考文献.我的核心问题是:为什么hash(用户名)是可预测的盐?
编辑2感谢所有提供答案的人; biffabacon在他的第2段直接解决了我的核心问题(基本上,你可以做的任何事情,以最大限度地使用盐的域,因此生成的哈希密码是好的),但在这个问题的各种评论中有很多美味的信息.
我在文件中找不到任何参考资料......
从线程的角度分配一个double(或任何其他简单类型,包括boolean)的原子操作?
double value = 0;
public void First() {
while(true) {
value = (new Random()).NextDouble();
}
}
public void Second() {
while(true) {
Console.WriteLine(value);
}
}
Run Code Online (Sandbox Code Playgroud)
在此代码示例中,第一个方法在一个线程中调用,第二个方法在另一个线程中调用.如果第二种方法在另一个线程中赋值变量时获得执行,那么第二种方法是否可以获得混乱值?
我不在乎是否收到旧值,接收有效值(不是设置8个字节中的2个)的唯一重要.我知道这是一个愚蠢的问题,但我想确定,因为我不知道CLR如何实际设置变量.
printf("pointer: %d\n", sizeof(*void));
Run Code Online (Sandbox Code Playgroud)
由于*,此行导致语法错误.我该怎么办才能让它发挥作用?
我在PHP5中编写了一个foreach循环.这是脚本:
foreach(range('A','Z') as $char) // line 1
{ // line 2
echo strtoupper($char)strtolower($char); // line 3
} // line 4
Run Code Online (Sandbox Code Playgroud)
我收到此错误消息解析错误:解析错误,第3行的testing.php中出现意外的T_STRING
我花了将近一个小时来弄清楚我应该在两个函数之间添加一个点,如下所示:
echo strtoupper($char).strtolower($char);
Run Code Online (Sandbox Code Playgroud)
所以我无法区分这两行代码:
echo strtoupper($char).strtolower($char);
echo strtoupper($char)strtolower($char);
Run Code Online (Sandbox Code Playgroud) 我想将Listbox selectedItems绑定到数组.但.NET在运行时抛出异常.
d.SetBinding(ListBox.SelectedItemsProperty, new Binding { Source = SomeArray });
Run Code Online (Sandbox Code Playgroud)
dXAML中的一些ListBox 在哪里.
例外:
所选项目无法绑定.
为什么?
请帮助我,我需要合并多个数组,然后按数组值计数排序.以下是问题:
$array1 = array("abc", "def", "ghi", "jkl", "mno");
$array2 = array("mno", "jkl", "mno", "ghi", "pqr", "stu");
$array3 = array_merge($array1, $array2);
$array4 = ???
print_r($array4);
Run Code Online (Sandbox Code Playgroud)
我想要这样的回报$array4:
Array
(
[0] => mno
[1] => ghi
[2] => jkl
[3] => abc
[4] => def
[5] => pqr
[6] => stu
)
Run Code Online (Sandbox Code Playgroud) 这是SQL
SELECT tal.TrustAccountValue
FROM TrustAccountLog AS tal
INNER JOIN TrustAccount ta ON ta.TrustAccountID = tal.TrustAccountID
INNER JOIN Users usr ON usr.UserID = ta.UserID
WHERE usr.UserID = 70402 AND
ta.TrustAccountID = 117249 AND
tal.trustaccountlogid =
(
SELECT MAX (tal.trustaccountlogid)
FROM TrustAccountLog AS tal
INNER JOIN TrustAccount ta ON ta.TrustAccountID = tal.TrustAccountID
INNER JOIN Users usr ON usr.UserID = ta.UserID
WHERE usr.UserID = 70402 AND
ta.TrustAccountID = 117249 AND
tal.TrustAccountLogDate < '3/1/2010 12:00:00 AM'
)
Run Code Online (Sandbox Code Playgroud)
Basicaly有一个Users表,一个TrustAccount表和一个TrustAccountLog表.
用户:包含用户及其详细信息
TrustAccount:用户可以拥有多个TrustAccounts.
TrustAccountLog:包含对所有TrustAccount"移动"的审计.一个
TrustAccount与多个TrustAccountLog项关联.现在这个查询在SQL Server Management …
c# ×3
php ×3
.net ×1
array-merge ×1
arrays ×1
c ×1
cryptography ×1
cursor ×1
data-binding ×1
encryption ×1
inno-setup ×1
merge ×1
multilingual ×1
performance ×1
security ×1
sorting ×1
sql ×1
sql-server ×1
wamp ×1
windows ×1
wpf ×1