小编Ibr*_*taz的帖子

为什么我需要使用Rfc2898DeriveBytes类(在.NET中)而不是直接使用密码作为密钥或IV?

使用Rfc2898DeriveBytes和使用之间有什么区别Encoding.ASCII.GetBytes(string object);

我对这两种方法都取得了相对的成功,前者是一种更长时间的方法,因为后者很简单而且非常重要.两者似乎都允许你最终做同样的事情,但我正在努力看到使用前者而不是后者.

我能够掌握的基本概念是你可以将字符串密码转换为字节数组,用于例如对称加密类AesManaged.通过RFC类,但在创建rfc对象时可以使用salt值和密码.我认为它更安全,但仍然是一个没有受过教育的猜测!此外,它允许您返回一定大小的字节数组,就像这样.

以下是一些示例,向您展示我的来源:

byte[] myPassinBytes = Encoding.ASCII.GetBytes("some password");
Run Code Online (Sandbox Code Playgroud)

要么

string password = "P@%5w0r]>";
byte[] saltArray = Encoding.ASCII.GetBytes("this is my salt");
Rfc2898DeriveBytes rfcKey = new Rfc2898DeriveBytes(password, saltArray);
Run Code Online (Sandbox Code Playgroud)

'rfcKey'对象现在可用于在对称加密算法类上设置.Key或.IV属性.

即.

RijndaelManaged rj = new RijndaelManaged ();
rj.Key = rfcKey.Getbytes(rj.KeySize / 8); 
rj.IV = rfcKey.Getbytes(rj.Blocksize / 8);
Run Code Online (Sandbox Code Playgroud)

'rj'应该准备好了!

令人困惑的部分......所以我不是只使用'myPassInBytes'数组来帮助设置我的'rj'对象,而不是使用'rfcKey'对象?

我试过在VS2008中这样做,直接答案是否定的.但是,你们有一个更好的教育答案,为什么RFC类被用于上面提到的另一种选择?

c# cryptography rfc2898

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

将ToolStripMenuItems动态添加到MenuStrip(C#/ Winforms)

我实施了我的解决方案(基本解决方案),我很高兴.

问题是当我使用'Add'方法向ToolStripItemCollection添加新项时,我得到一些重载......有意义的一个是字符串参数,图像参数和EventHandler参数.

因为我的下拉列表将在RunTime中用作动态历史记录,这意味着它在编译时将变为空.这意味着我无法通过使用设计器表面的标准路径添加事件处理程序(单击时).我被迫使用上述的重载.

我的图像对我没用,但动态添加事件处理程序是我感兴趣的并需要帮助.

网址:http://msdn.microsoft.com/en-us/library/bxdt0s8t.aspx

没有其他超载可以帮助我,所以我必须使用一个图像......任何人都有任何想法来解决这个问题并告诉我如何完全满足这个重载版本的add方法.

TIA.

更新:我在当前项目中再次执行此操作但使用更多更流畅的代码但原理相同,在运行时动态添加事件处理程序.我回家后会用一些示例代码更新这个.

c# menuitem winforms

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

在PowerShell中是否有用于检查别名的命令?

是否有PowerShell命令允许您检查是否存在别名?

(我一直在网上看看,它看起来不像.)

powershell powershell-3.0

15
推荐指数
3
解决办法
7629
查看次数

模数运算符的反面?

我记得在java中,模运算符可以被反转,这样你可以反转它,而不是看到余数是什么操作,所以它会告诉你很多次数除以:

Console.WriteLine(1000 % 90);
Console.WriteLine(100 % 90);
Console.WriteLine(81 % 80);
Console.WriteLine(1 % 1);
Run Code Online (Sandbox Code Playgroud)

输出:

  • 10
  • 10
  • 1
  • 0

示例由DotNetPerls提供

我想看看'80'进入'81'多少次,而不是看剩下的.哪个应为1,余数为1.

c#modulo运算符是否支持此行为?如果没有,怎么可能达到预期的行为?用最少的代码请...:D

编辑:

我想答案是简单的,比如将两个数字分开并去除' - .#'值并保持整数' - ' - '.我知道这一点,但必须有一个更明智的方式这样做?

c# integer-division

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

AspNetCore 集成测试多个 WebApplicationFactory 实例?

有谁知道是否可以WebApplicationFactory<TStartop>()在同一个单元测试中托管多个实例?

我已经尝试过,但似乎无法解决这个问题。

IE

_client = WebHost<Startup>.GetFactory().CreateClient();
var baseUri = PathString.FromUriComponent(_client.BaseAddress);
_url = baseUri.Value;

_client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(
    "Bearer", "Y2E890F4-E9AE-468D-8294-6164C59B099Y");
Run Code Online (Sandbox Code Playgroud)

WebHost 只是一个帮助类,它允许我在一行中轻松构建工厂和客户端。

在幕后,它所做的就是:

new WebApplicationFactory<TStartup>() 但还有其他一些事情。

如果我能建立另一个 Web 服务器的另一个实例来测试服务器到服务器的功能,那就 太好了。

有谁知道这是否可能?

c# integration-testing unit-testing asp.net-core asp.net-core-2.2

8
推荐指数
2
解决办法
2664
查看次数

多播代表参加70-536考试?

我正在阅读70-536考试的一些考题,一个开发人员在他的博客上发布的实际问题已经出现在我的考试题目中.我不记得他的回答是什么......但下面是一个问题:

您需要编写一个接受DateTime参数并返回bool值的多播委托.您应该使用哪个代码段?

A: public delegate int PowerDeviceOn(bool, DateTime)

B: public delegate bool PowerDeviceOn(Object, EventArgs)

C: public delegate void PowerDeviceOn(DateTime)

d: public delegate bool PowerDeviceOn(DateTime)

答案是A.

有人可以解释一下原因吗?因为我前段时间已经对这个问题进行过一些研究,所以我确信它是C,显然现在回过头来回答这个问题很清楚,我没有正确阅读.我确信我之前见过同一个,所以我跳到了最明显的一个.

这个问题的变体:

您需要编写一个接受DateTime参数的多播委托.您应该使用哪个代码段?

A: public delegate int PowerDeviceOn(bool, DateTime)

B: public delegate bool PowerDeviceOn(Object, EventArgs)

C: public delegate void PowerDeviceOn(DateTime)

d: public delegate bool PowerDeviceOn(DateTime)

现在这是这个问题的另一个变种,它仍然有相同的虚假样本答案,因为他们仍然善于将考试者甩掉.注意通过简单地保持样品如何回答相同,通过去除问题文本的一小部分,则答案为C,而不是一个.

这个变化没有正式答案,因为我只是用考试问题作为底板来构思它.答案肯定是C.这一次很容易看出为什么C是正确的,但是第一个问题我有一个问题,但是你知道在通过考试时不够好.

.net c# delegates

7
推荐指数
2
解决办法
2527
查看次数

[OptionalField]和[NonSerialized]之间有什么区别?

我在transcender上遇到了这个问题:

如果在反序列化期间不需要它的值,您应该对字段应用什么?

我= [NonSerialized],ANSWER = [OptionalField]

我的直觉反应是NonSerialised,但Transcender说我错了.就[非自动化]属性而言,我很清楚要注意什么,但我仍然希望这一点得到澄清.

据我所知,前者与同一程序集的较新版本和旧版本之间的版本冲突有关系.后者更关心的是没有序列化字段FULLSTOP.还有什么可以将这两者分开吗?MSDN并没有真正说明这一点,因为它们都使用XMLIgnoreAttribute在BinaryFormatters和SoapFormatter上使用XMLFormatter.

我的第二个问题是你可以混合搭配两个属性中的任何一个吗?我还没有使用它们.

只是抛出这个,但我的回答是否与[OnDeserialized]和IdeserilizationCallback接口的实现方式有关?

更新:

我知道可选字段属性不会序列化数据成员持有的值,但NonSerialized甚至不会序列化数据成员或其值.

.net c# nonserializedattribute

6
推荐指数
1
解决办法
4361
查看次数

如何在运行时操作Delegate的调用列表?

我想知道如何从父委托的调用列表中删除单个委托.

<DelegateName>.RemoveAll();
Run Code Online (Sandbox Code Playgroud)

现在我可以删除所有,这将只是为了让想法运动,看看它应该是否应该工作,但任何被删除的代表将需要在RunTime再次添加!

所以:......

foreach(Delegate d in <DelegateName>.getInvocationList)
{ // do something with 'D'?? }
Run Code Online (Sandbox Code Playgroud)

现在我可以访问'D',我可以将它放入.Remove(),但它需要两个参数??? 我能得到一些帮助吗?

最后,一旦代理被删除,再次重新添加它的最佳方法是什么?所以我认为反思可能会在这方面发挥作用,但对你们来说.

更新:

本质上,有一个全局委托,有许多事件存在于不同的winforms类中,这些类是它的实例.所有这些事件都有一个处理事件的处理程序.一直在顶部的委托管理与其签名匹配的所有处理程序.我想在顶部搞乱这个委托,我想删除所有处理程序,然后在运行时重新添加它们.因此,顶部的委托是一个多播委托,其调用列表是各个委托的列表,而这些委托又指向我添加的四个处理程序之一.我希望这是有道理的,这是我正在做的一般概念.

c# reflection delegates winforms

6
推荐指数
1
解决办法
1871
查看次数

System.InvalidOperationException:在配置上下文时尝试使用该上下文

我已经实现了自定义 ASP.NET Core 中间件,它使用数据库上下文作为依赖项。有时,对于到达 API 的第一个请求,它会引发以下异常:

执行请求时发生未处理的异常。System.InvalidOperationException:在配置上下文时尝试使用该上下文。DbContext 实例不能在 OnConfiguring 内部使用,因为此时它仍在配置中。如果在前一个操作完成之前在此上下文上启动第二个操作,则可能会发生这种情况。不保证任何实例成员都是线程安全的。`

只有当从 SPA 调用 API 时我才能重现它。当我从 Swagger 调用 API 时,一切都工作正常。更改中间件的顺序没有帮助。经过深入研究后,我意识到中间件每个应用程序实例化一次,而数据库上下文具有范围生命周期。所以也许问题在于将我的数据库上下文直接注入到中间件的构造函数中。我通过从构造函数中删除数据库上下文注入并将其直接注入到InvokeAsync方法中来修复我的代码。这有帮助,异常消失了。

虽然我解决了我的问题,但我不太明白它是如何工作的。据我了解,默认情况下,EF.Core 数据库上下文是在作用域生命周期内注册的,就 ASP.NET Core 应用程序而言,这意味着新上下文会为每个新请求实例化,并在完成后进行处置。因为我将数据库上下文注入到中间件的构造函数中,所以它应该在第一个请求完成后立即被处理,并且应该抛出此异常或另一个表示它正在尝试使用已处理上下文的异常。另外,我绝对不清楚为什么只有当 API 从 SPA 调用时才会发生此错误,而它对所有 Swagger 请求都工作良好。

autofac entity-framework-core asp.net-core

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

使用循环来获取ListView中的每个项目?

使用循环获取多个列的ListView中的每个项目的有效方法是什么?

经过一段时间的挖掘,我找不到任何东西,所以当我找到一些我想在这里分享它的东西时,看看人们是否有更好的方法.还有点像抢占一个必然会出现的问题,因为我有点想着怎么办?eerrrr ....我?

我喜欢这个网站,所以我想分享我对上述问题的解决方案.我知道倒退,但我知道它会帮助某人在某个地方.=)

    private ArrayList getItemsFromListViewControl()
    {                      
        ArrayList lviItemsArrayList = new ArrayList();

        foreach (ListViewItem itemRow in this.loggerlistView.Items)
        {
            //lviItemsArrayList.Add(itemRow.Text); <-- Already included in SubItems so ... = )

            for (int i = 0; i < itemRow.SubItems.Count; i++)
            {
                lviItemsArrayList.Add(itemRow.SubItems[i].Text);
                // Do something useful here, for example the line above.
            }
        }
        return lviItemsArrayList;
    }
Run Code Online (Sandbox Code Playgroud)

这将返回一个基于线性数组的表示,该表示属于ArrayList集合对象中的目标ListView控件的所有项.

c# listview loops winforms

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