小编tsh*_*hao的帖子

PasswordDeriveBytes vs Rfc2898DeriveBytes,过时但速度更快

我正在研究基于从SymmetricAlgorithm继承的类的加密功能,例如TripleDes,DES等.

基本上有两种方法可以为我的算法类生成一致的密钥和IV,PasswordDeriveBytes并且Rfc2898DeriveBytes都继承自DeriveBytes抽象类.

PasswordDeriveBytes.GetBytes()方法在.NET框架中标记为过时,建议使用Rfc2898DeriveBytes.GetBytes(),因为它与PBKDF2标准匹配.但是,根据我的测试,GetBytes()在Rfc2898DeriveBytes类中调用相同的方法几乎比类中的方法慢15倍PasswordDeriveBytes,这导致意外的CPU使用率(总是高于50%).

这是一些测试数据:

  • 迭代次数:100
  • 算法类型:DES
  • 原文:"我是测试密钥,请加密我"
  • 时间:
    • PasswordDeriveBytes:99ms
    • Rfc2898DeriveBytes:1,373ms

基于测试,Rfc2898DeriveBytes在生产环境中不良性能是不可接受的.

之前有没有人注意到这个问题?任何解决方案我仍然可以使用标准的解决方案而不会达到性能?使用过时方法的任何风险(可能在将来的版本中删除)?

多谢你们!

编辑:

可能我发现问题出在哪里...默认的迭代计数数为PasswordDeriveBytes100,而for Rfc2898DeriveBytes为1000.在我将它们更改为与1000相同的数字后,执行Rfc2898DeriveBytes只有两倍.

.net cryptography pbkdf2 rfc2898

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

将JSON格式DateTime传递给ASP.NET MVC

我们知道MVC以这种格式返回JsonResult的DateTime:,/Date(1240718400000)/我们知道如何在JS中解析它.

但是,似乎MVC不接受以这种方式发送的DateTime参数.例如,我有以下Action.

[HttpGet]
public ViewResult Detail(BookDetail details) { //... }
Run Code Online (Sandbox Code Playgroud)

BookDetail类包含一个名为CreateDate的DateTime字段,我以这种格式从JS传递了一个JSON对象:

{"CreateDate": "/Date(1319144453250)/"}
Run Code Online (Sandbox Code Playgroud)

CreateDate被识别为null.

如果我以这种方式传递JSON,它按预期工作:

{"CreateDate": "2011-10-10"}
Run Code Online (Sandbox Code Playgroud)

问题是我无法以简单的方式更改客户端代码,必须坚持/ Date(1319144453250)/这种格式.我必须在服务器端进行更改.

如何解决这个问题呢?这与ModelBinder有关吗?

非常感谢提前!

asp.net-mvc json

13
推荐指数
1
解决办法
1万
查看次数

建议的端口到ASP.NET MVC的方法

我想我们中的许多人过去常常面临同样的问题:将现有Web表单App移植到MVC的最佳实践是什么.对我来说,情况是我们同时支持Web表单和MVC.这意味着,我们在MVC中创建新功能,同时在Web表单中维护旧页面,并且它们都在同一个项目中.

关键是:我们希望保持DRY(不要重复自己)原则并尽可能减少重复代码.ASPX页面不是问题,因为我们只在MVC中创建新功能,但仍然有一些共享组件我们想要重新使用新/旧页面:

  • 母版页
  • 用户控件

这里的问题是:是否可以创建一个可用于Web表单和MVC的公共母版页/用户控件?我知道,ViewMasterPage从继承母版ViewUserControl从继承用户控件,所以它也许 OK,让Web窗体和MVC ASPX页面参考MVC版本.我做了一些测试,发现有时它会在渲染用户控件时产生错误.

您可以与我分享任何想法/经验吗?非常感谢它.


背景:

这个UI项目已经创建多年,有20多人正在研究它.在我开始共同的母版页面试用之前,大约有50多个Web表单页面和只有一个MVC页面.我们在MVC上创建了新功能,但旧页面保留在Web表单中.

这种情况将持续很长时间,可能是因为这是一家以业务为导向的公司,因此新功能始终处于更高优先级.这意味着我们需要同时支持两者.

asp.net asp.net-mvc

9
推荐指数
2
解决办法
1340
查看次数

标签 统计

asp.net-mvc ×2

.net ×1

asp.net ×1

cryptography ×1

json ×1

pbkdf2 ×1

rfc2898 ×1