小编Luk*_*vin的帖子

C#名称空间别名 - 有什么意义?

我一直在努力学习更多关于C#语言的知识,但是我还没有看到一个人会使用命名空间别名的情况.

 using someOtherName =  System.Timers.Timer;
Run Code Online (Sandbox Code Playgroud)

在我看来,它只会增加对理解语言的困惑.有人可以解释一下.

谢谢

c# namespaces

88
推荐指数
6
解决办法
5万
查看次数

用于密码哈希的非随机盐

更新:我最近从这个问题中了解到,在下面的整个讨论中,我(我确信其他人也这样做)有点令人困惑:我一直称之为彩虹表,实际上称为哈希表.彩虹桌是更复杂的生物,实际上是Hellman Hash Chains的变种.虽然我认为答案仍然是相同的(因为它不归结为密码分析),但有些讨论可能有点偏差.
问题是:" 什么是彩虹表,它们是如何使用的? "


通常,我总是建议使用加密强随机值作为salt,与哈希函数(例如密码)一起使用,例如防止彩虹表攻击.

但实际上盐是随机的加密必需吗?在这方面,任何唯一值(每个用户唯一,例如userId)是否足够?实际上,它会阻止使用单个Rainbow Table来破解系统中的所有(或大多数)密码......
但是缺少熵真的会削弱散列函数的加密强度吗?


注意,我不是在问为什么要使用salt,如何保护它(它不需要),使用单个常量哈希(不要),或者使用什么样的哈希函数.
无论盐是否需要熵.


感谢所有答案到目前为止,但我想集中讨论我(有点)不太熟悉的领域.主要是对密码分析的影响 - 如果有人从密码数学PoV获得一些输入,我会非常感激.
此外,如果还有其他未被考虑的向量,那也是很好的输入(参见@Dave Sherohman指向多个系统).
除此之外,如果您有任何理论,想法或最佳实践 - 请使用证据,攻击情景或经验证据来支持这一点.或者甚至是可接受的权衡的有效考虑因素......我对该主题的最佳实践(资本B资本P)很熟悉,我想证明这实际上提供了什么价值.


编辑:这里有一些非常好的答案,但我认为正如@Dave所说,它归结为Rainbow Tables的常见用户名......以及可能不太常见的名称.但是,如果我的用户名是全局唯一的呢?不一定是我的系统唯一,但每个用户 - 例如电子邮件地址.
没有动力为单个用户构建RT(正如@Dave强调的那样,盐不会保密),这仍然会阻止群集.唯一的问题是我可能在不同的网站上有相同的电子邮件和密码 - 但盐无论如何都不会阻止它.
因此,它回归到密码分析 - 是否需要熵?(我目前的想法是从密码分析的角度来看没有必要,但这是出于其他实际原因.)

security authentication hash cryptography password-protection

88
推荐指数
4
解决办法
3万
查看次数

IFormatProvider做什么?

我正在使用Datetime.ParseExact方法,它需要一个IFormatProvider ...

它可以输入null,但它到底是做什么的?

c# asp.net iformatprovider

87
推荐指数
4
解决办法
12万
查看次数

在MSIL方法中hidebysig的目的是什么?

使用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构造有什么作用?

cil

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

无法从传输连接读取数据:远程主机强制关闭现有连接

我有一个服务器应用程序,有时,当客户端尝试连接时,我收到以下错误:

在此输入图像描述

注意:"无法从客户端获取流或登录失败"是我在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)

可能是什么导致了这个问题?请注意,它不会一直发生

.net c# ioexception

85
推荐指数
9
解决办法
30万
查看次数

System.Runtime.Caching.MemoryCache vs HttpRuntime.Cache - 有什么区别吗?

我想知道MemoryCache和之间是否有任何区别HttpRuntime.Cache,哪一个在ASP.NET MVC项目中是首选的?

据我所知,两者都是线程安全的,API从一开始就或多或少都是一样的,所以在使用哪个时有什么区别?

c# asp.net-mvc caching c#-4.0

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

405方法不允许使用web 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)

有什么建议?

c# webdav asp.net-web-api

82
推荐指数
9
解决办法
20万
查看次数

如何只用一个IDENTITY列插入表格?

(在尝试回答另一个问题的过程中提出这个问题)

考虑以下名为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 sql-server identity

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

如何在Oracle中生成GUID?

是否可以在Insert语句中自动生成GUID?

另外,我应该使用什么类型的字段来存储此GUID?

oracle guid

81
推荐指数
6
解决办法
14万
查看次数

varchar(max)无处不在?

使所有Sql Server 2008字符串列varchar(max)有问题吗?我允许的字符串大小由应用程序管理.数据库应该坚持我给它的东西.通过在Sql Server 2008中将所有字符串列声明为varchar(max)类型,无论实际进入它们的数据大小如何,我都会受到性能影响吗?

varchar sql-server-2008

80
推荐指数
5
解决办法
4万
查看次数