问题列表 - 第32955页

断言两个List <List <T >>相互等效

为了确保两个列表相同,在nunit中,我们可以CollectionAssert.AreEquivalent用来检查这两个列表是否包含相同的元素(命令不重要).

但是如何检查两者List<List<T>>是否相同?这个想法是,如果一个List<T>元素与另一个元素具有相同的元素List<T>(再次,顺序并不重要),那么它们是相等的.

c# nunit

16
推荐指数
2
解决办法
8031
查看次数

你能发现我的身份验证协议中的漏洞吗?

前段时间我们需要一个多个Web服务之间的单点登录身份验证解决方案.至少在那个时候我们认为OpenID协议过于复杂,我们不相信它的Ruby on Rails插件.因此,我们设计了自己的协议,而不是实现OpenID提供者和OpenID使用者.

我有两个问题:

  1. 不创建我们自己的OpenID提供商并设置我们的OpenID消费者只接受它是不是一件坏事吗?不允许公开登录或注册,我们希望简化身份验证.

  2. 您能否在以下设计中发现关键错误或漏洞?

如果你作为一个公社可以批准这个设计,我会考虑将这个代码提取到Ruby on Rails插件中.

请查看流程图和顺序图.

细节:

身份验证提供程序("AP"):

  • 中央服务,包含有关用户的所有数据.
  • 此设置中只存在一个"AP".
  • 有可能有多个"AP",但在这种情况下这不应该是相关的.
  • "AP"事先知道每个"S".

身份验证客户端(服务"S"):

  • 存在多个内部和外部Web服务.
  • 每个服务事先都知道"AP"及其公钥.

演员("A"):

  • 通过用户名和密码使用AP对自己进行身份验证的最终用户
  • 可以在登录前直接请求任何"S"或"AP"URI

"A","S"和"AP"之间的连接由HTTPS保护.

简要描述了认证逻辑:

这些是对本文顶部链接的图形流程图和序列图的描述.

1)Auth Provider"AP"

  • "AP"向"S"发出服务器到服务器HTTP POST请求以获取现时.
  • "AP"生成身份验证令牌.
  • 身份验证令牌是一个XML实体,包括:
    • 到期日(从现在起2分钟),
    • 先前请求的随机数(以防止重播),
    • 识别"S"的名称(Service_1的令牌不适合Service_2),
    • 有关最终用户的信息.
  • 身份验证令牌使用AES256加密,加密密钥和初始化向量由AP的私有RSA密钥签名.
  • 产生的字符串("data","key"和"iv")首先进行Base64编码,然后进行URL编码,以允许它们在URL查询字符串中传递.
  • 最终用户"A"被HTTP重定向到服务"S"(HTTPS GET请求).

2)服务"S"

  • 从用户代理接收URL参数中的身份验证令牌.
  • 使用AP的预共享公钥解密身份验证令牌.
  • 仅接受一次身份验证令牌(令牌包含仅一次有效的nonce).
  • 检查身份验证令牌中的标识名称是否与服务名称相对应.
  • 检查身份验证令牌是否已过期.

备注:

如果其他人也可以解密身份验证令牌,这不是问题,因为它不包含有关用户的机密信息.但是,除AP之外的其他任何人都无法生成有效的身份验证令牌.因此涉及RSA密钥对.

RSA私钥仅用于对令牌进行签名,因为它无法加密长度超过实际密钥长度的数据.因此,AES用于加密.

由于身份验证令牌是作为HTTP GET请求传递的,因此它将存储在例如Apache的日志文件中.使用一次性随机数和失效日期应尽量减少重放攻击的可能性.POST请求需要一个HTML页面,其中包含由Javascript自动提交的表单,这就是使用GET的原因.

服务"S"仅在服务器到服务器API请求中生成随机数.因此,未经身份验证的生成请求不应构成DoS漏洞.

security authentication encryption cryptography

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

是否有一个查询将返回Microsoft Access表中的所有列名称?

我有一个Microsoft Access数据库,我使用VB.NET连接到Jet数据库引擎.我想以编程方式获取特定表的所有列名称.

我想做相当于这个MS SQL语句:

SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.Columns WHERE TABLE_NAME = 'TableName' 
Run Code Online (Sandbox Code Playgroud)

Access中有可能吗?如果没有,我有什么选择获取列名?

.net vb.net ms-access

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

Javascript,按键值总是最新的一个字符?

如果键入"圣",由时间我按下吨,如果我输出的输入textfield.valueonkeypress/ onkeydown功能,我只得到"S".

为什么是这样?我如何摆脱这种滞后?

javascript keypress keydown keyboard-events

12
推荐指数
2
解决办法
6749
查看次数

一组双打的Akima插值

假设我有一个双打数组,使用Akima插值对这个系列进行采样的好算法是什么?将这些数学描述翻译成代码我太愚蠢了.

// values is an array of doubles
// idx is the index of the left-hand value for the current interpolation
// t is the normalized parameter between values[idx] and values[idx+1]
// Don't worry about array bounds, I'll handle that separately.
public double InterpolateAkima(double[] values, int idx, double t)
{
  ...?
}
Run Code Online (Sandbox Code Playgroud)

c# interpolation spline

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

wxPython:将图像置于面板中心

我有一个带有StaticBitmap图像的GridSizer.我想将每个图像放在他们自己的面板中,这样我就可以更改背景颜色以突出显示图像(如果已选中).但是,当我尝试这样做时,图像不会在其面板中居中,突出显示的背景颜色仅出现在两个边框上.如何在面板中央制作图像,以便每个面板周围都有相同的边框?

sizer = wx.GridSizer(rows=row,cols=cols,vgap=5)
for fn in filenames:
    p = wx.Panel(self.panel)
    img = wx.Image(fn, wx.BITMAP_TYPE_ANY)
    img2 = wx.StaticBitmap(p, wx.ID_ANY, wx.BitmapFromImage(img))
    img2.Bind(wx.EVT_LEFT_DOWN, self.OnClick, img2)
    sizer.Add(p)
self.panel.SetSizer(sizer)
Run Code Online (Sandbox Code Playgroud)

python wxpython

2
推荐指数
1
解决办法
3602
查看次数

Android 3D动画

我已经在Android上工作了几个月.现在我想跳到Android游戏.那么有没有资源,电子书或教程,我可以在其中学习2D或3D游戏开发.

谢谢.

3d android

7
推荐指数
1
解决办法
9768
查看次数

C#在空隙之间传递字符串

我想做的就是将一个字符串从一个空格传递到另一个空格.

private void getFilename2()
    {
        if (textBox2.TextLength.Equals("0"))
        {

        }
        else
        {
            string inputString = textBox2.Text.ToString();
            string last = inputString.Substring(inputString.LastIndexOf('\\') + 1);
            string[] filename2 = last.Split('.');
        }
    }

    private void button1_Click(object sender, EventArgs e)
    {
        getFilename1();
        getFilename2();
string filez = filename2;
}
Run Code Online (Sandbox Code Playgroud)

我知道这不起作用,但我对如何在空隙中移动字符串非常不熟悉.

c# winforms

0
推荐指数
2
解决办法
1261
查看次数

函数调用的数量对性能有多大影响?

调用更多函数是否会产生任何明显的性能影响,或者是否试图减少函数调用的次数是一种毫无意义的过早优化?

简化示例:这之间是否有任何真实的性能示例:

function foo($var) {
    echo $var;
}
foo();
Run Code Online (Sandbox Code Playgroud)

还有这个:

function foo($var) {
   bar($var);
}

function bar($var) {
  baz($var);
}

function baz($var) {
  echo $var;
}

foo();
Run Code Online (Sandbox Code Playgroud)

php optimization

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

在包装到扩展方法后,LINQ语句不再有效

我需要一个可以采用字符串集合的方法,并将所有特定字符串替换为另一个字符串.

例如,如果我有一个List<string>如下所示:

List<string> strings = new List<string> { "a", "b", "delete", "c", "d", "delete" };
Run Code Online (Sandbox Code Playgroud)

我想用""替换"删除",我会使用这个LINQ语句:

strings = (from s in strings select (s=="delete" ? s=String.Empty : s)).ToList();
Run Code Online (Sandbox Code Playgroud)

它很棒.但后来我想我应该把它作为一种扩展方法,因为我以后可能会再次使用它.在这种情况下,我只想写下面的内容:

strings.ReplaceStringInListWithAnother( "delete", String.Empty);
Run Code Online (Sandbox Code Playgroud)

当我的代码编译,并且LINQ语句在扩展方法内部工作时,当我返回时,集合恢复为其原始内容:

public static void ReplaceStringInListWithAnother( this List<string> my_list, string to_replace, string replace_with)
{
    my_list = (from s in my_list select (s==to_replace ? s=replace_with : s)).ToList();
}
Run Code Online (Sandbox Code Playgroud)

所以看起来我只是修改了List的副本......但是当我查看Pop的代码时,它同样修改了集合,但更改仍然存在,所以我的假设是我的方法的参数声明是正确的.

谁能解释我在这里做错了什么?

c# linq extension-methods .net-3.5

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