我一直在努力学习更多关于C#语言的知识,但是我还没有看到一个人会使用命名空间别名的情况.
using someOtherName = System.Timers.Timer;
Run Code Online (Sandbox Code Playgroud)
在我看来,它只会增加对理解语言的困惑.有人可以解释一下.
谢谢
更新:我最近从这个问题中了解到,在下面的整个讨论中,我(我确信其他人也这样做)有点令人困惑:我一直称之为彩虹表,实际上称为哈希表.彩虹桌是更复杂的生物,实际上是Hellman Hash Chains的变种.虽然我认为答案仍然是相同的(因为它不归结为密码分析),但有些讨论可能有点偏差.
问题是:" 什么是彩虹表,它们是如何使用的? "
通常,我总是建议使用加密强随机值作为salt,与哈希函数(例如密码)一起使用,例如防止彩虹表攻击.
但实际上盐是随机的加密必需吗?在这方面,任何唯一值(每个用户唯一,例如userId)是否足够?实际上,它会阻止使用单个Rainbow Table来破解系统中的所有(或大多数)密码......
但是缺少熵真的会削弱散列函数的加密强度吗?
注意,我不是在问为什么要使用salt,如何保护它(它不需要),使用单个常量哈希(不要),或者使用什么样的哈希函数.
无论盐是否需要熵.
感谢所有答案到目前为止,但我想集中讨论我(有点)不太熟悉的领域.主要是对密码分析的影响 - 如果有人从密码数学PoV获得一些输入,我会非常感激.
此外,如果还有其他未被考虑的向量,那也是很好的输入(参见@Dave Sherohman指向多个系统).
除此之外,如果您有任何理论,想法或最佳实践 - 请使用证据,攻击情景或经验证据来支持这一点.或者甚至是可接受的权衡的有效考虑因素......我对该主题的最佳实践(资本B资本P)很熟悉,我想证明这实际上提供了什么价值.
编辑:这里有一些非常好的答案,但我认为正如@Dave所说,它归结为Rainbow Tables的常见用户名......以及可能不太常见的名称.但是,如果我的用户名是全局唯一的呢?不一定是我的系统唯一,但每个用户 - 例如电子邮件地址.
没有动力为单个用户构建RT(正如@Dave强调的那样,盐不会保密),这仍然会阻止群集.唯一的问题是我可能在不同的网站上有相同的电子邮件和密码 - 但盐无论如何都不会阻止它.
因此,它回归到密码分析 - 是否需要熵?(我目前的想法是从密码分析的角度来看没有必要,但这是出于其他实际原因.)
security authentication hash cryptography password-protection
我正在使用Datetime.ParseExact方法,它需要一个IFormatProvider ...
它可以输入null,但它到底是做什么的?
使用ildasm和C#程序,例如
static void Main(string[] args)
{
}
Run Code Online (Sandbox Code Playgroud)
得到:
.method private hidebysig static void Main(string[] args) cil managed
{
.entrypoint
// Code size 2 (0x2)
.maxstack 8
IL_0000: nop
IL_0001: ret
} // end of method Program::Main
Run Code Online (Sandbox Code Playgroud)
hidebysig构造有什么作用?
我有一个服务器应用程序,有时,当客户端尝试连接时,我收到以下错误:

注意:"无法从客户端获取流或登录失败"是我在catch语句中添加的文本
它停止的行(sThread:第96行)是:
tcpClient = (TcpClient)client;
clientStream = tcpClient.GetStream();
sr = new StreamReader(clientStream);
sw = new StreamWriter(clientStream);
// line 96:
a = sr.ReadLine();
Run Code Online (Sandbox Code Playgroud)
可能是什么导致了这个问题?请注意,它不会一直发生
我想知道MemoryCache和之间是否有任何区别HttpRuntime.Cache,哪一个在ASP.NET MVC项目中是首选的?
据我所知,两者都是线程安全的,API从一开始就或多或少都是一样的,所以在使用哪个时有什么区别?
这个错误非常普遍,我尝试了所有的解决方案,但没有解决.我在控制面板中禁用了WebDAV发布,并将其添加到我的Web配置文件中:
<handlers>
<remove name="WebDAV"/>
</handlers>
<modules runAllManagedModulesForAllRequests="true">
<remove name="WebDAVModule"/>
</modules>
Run Code Online (Sandbox Code Playgroud)
错误仍然存在.这是控制器:
static readonly IProductRepository repository = new ProductRepository();
public Product Put(Product p)
{
return repository.Add(p);
}
Run Code Online (Sandbox Code Playgroud)
方法实施:
public Product Add(Product item)
{
if (item == null)
{
throw new ArgumentNullException("item");
}
item.Id = _nextId++;
products.Add(item);
return item;
}
Run Code Online (Sandbox Code Playgroud)
这就是引发异常的地方:
client.BaseAddress = new Uri("http://localhost:5106/");
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
var response = await client.PostAsJsonAsync("api/products", product);//405 exception
Run Code Online (Sandbox Code Playgroud)
有什么建议?
(在尝试回答另一个问题的过程中提出这个问题)
考虑以下名为GroupTable的MS-SQL表:
GroupID ------- 1 2 3
其中GroupID是主键,是Identity列.
如何在不使用IDENTITY_INSERT ON的情况下在表中插入新行(从而生成新ID)?
请注意:
INSERT INTO GroupTable() Values ()
Run Code Online (Sandbox Code Playgroud)
......不行.
编辑:我们在这里谈论SQL 2005或SQL 2008.
使所有Sql Server 2008字符串列varchar(max)有问题吗?我允许的字符串大小由应用程序管理.数据库应该坚持我给它的东西.通过在Sql Server 2008中将所有字符串列声明为varchar(max)类型,无论实际进入它们的数据大小如何,我都会受到性能影响吗?
c# ×5
.net ×1
asp.net ×1
asp.net-mvc ×1
c#-4.0 ×1
caching ×1
cil ×1
cryptography ×1
guid ×1
hash ×1
identity ×1
ioexception ×1
namespaces ×1
oracle ×1
security ×1
sql ×1
sql-server ×1
varchar ×1
webdav ×1