小编Cam*_*out的帖子

如何在PHP单元测试中获得与C#相同的HMAC256结果?

我以为我会尝试将新的签名请求逻辑添加到我的Facebook画布应用程序中,以使我自己"轻松"我在GitHub上访问facebook PHP sdk并查看单元测试.

我的实际问题是我无法获得请求中包含的哈希值,以匹配我使用应用程序机密计算的哈希值以及请求中发送的数据.

Facebook的身份验证页面中描述了这是如何工作.

private string VALID_SIGNED_REQUEST = "ZcZocIFknCpcTLhwsRwwH5nL6oq7OmKWJx41xRTi59E.eyJhbGdvcml0aG0iOiJITUFDLVNIQTI1NiIsImV4cGlyZXMiOiIxMjczMzU5NjAwIiwib2F1dGhfdG9rZW4iOiIyNTQ3NTIwNzMxNTJ8Mi5JX2VURmtjVEtTelg1bm8zakk0cjFRX18uMzYwMC4xMjczMzU5NjAwLTE2Nzc4NDYzODV8dUk3R3dybUJVZWQ4c2VaWjA1SmJkekdGVXBrLiIsInNlc3Npb25fa2V5IjoiMi5JX2VURmtjVEtTelg1bm8zakk0cjFRX18uMzYwMC4xMjczMzU5NjAwLTE2Nzc4NDYzODUiLCJ1c2VyX2lkIjoiMTY3Nzg0NjM4NSJ9";

private string NON_TOSSED_SIGNED_REQUEST = "laEjO-az9kzgFOUldy1G7EyaP6tMQEsbFIDrB1RUamE.eyJhbGdvcml0aG0iOiJITUFDLVNIQTI1NiJ9";

public void SignedRequestExample()
{
 var Encoding = new UTF8Encoding();

 string ApplicationSecret = "904270b68a2cc3d54485323652da4d14"; 

 string SignedRequest = VALID_SIGNED_REQUEST;
 string ExpectedSignature = SignedRequest.Substring(0, SignedRequest.IndexOf('.'));
 string Payload = SignedRequest.Substring(SignedRequest.IndexOf('.') + 1);

 // Back & Forth with Signature
 byte[] ActualSignature = FromUrlBase64String(ExpectedSignature);
 string TestSignature = ToUrlBase64String(ActualSignature);

 // Back & Forth With Data
 byte[] ActualPayload = FromUrlBase64String(Payload);
 string Json = Encoding.GetString(ActualPayload);
 string TestPayload = …
Run Code Online (Sandbox Code Playgroud)

.net c# hash facebook cryptography

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

Windows 7 Ultimate x64上的System.Net.HttpListener限制为1k并发连接

我一直在尝试使用我的工作站上的HTTP.sys/HttpListener进行一些测试,似乎有一些限制可以防止超过1000个并发连接.有没有人有这方面的更多信息?(因为1k似乎有点清洁是巧合).

我试图找到任何线程/配置/注册表设置但是空了.

提前致谢.
GJ


看起来我跳了一下枪.

我似乎错过了使用http.sys/HttpListener BeginGetContext对并发连接不是很好,因为新的BeginGetContext只会在先前请求的响应流关闭后触发.

因此积压了1000个请求,在这种情况下,积压工作正在填补.

无论如何 - 如果有人有任何评论(或可能的更正)随时扩大.

谢谢
GJ

.net sockets httplistener

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

IIS - 无需停机即可将绑定从一个站点更改为另一个站点

我试图从C#控制台应用程序使用ServerManager对IIS元数据库进行一些站点更改.

我有一个我想部署的站点,没有任何停机时间,为此我做到了:

  1. 使用新的DLL使用自己的应用程序池创建新的第二个站点

  2. 添加一个可以在本地访问的绑定,这样我就可以将第一个请求发送到第二个站点并且它"热身"

  3. 我从原始站点删除了www.domain.com的绑定,然后将其添加到第二个站点,然后调用CommitChanges()

这是故障开始的地方,绑定信息已正确更新,但IIS已停止第二个站点.有没有什么方法可以删除原始绑定并将其放在新站点上而不调用两次提交更改?

我真的想避免在这个实例中使用ARR的开销或任何其他负载平衡等,是否有办法在不停机的情况下将绑定从一个站点交换到另一个站点?真的感觉应该有.

c# deployment iis iis-7

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

使用SOLR计算两个ulongs之间的"相似性"/"bitcount"

我们有一个图像数据库,我使用David Oftedal实施的Neal Krawetz博士的方法计算了PHASH .

部分示例代码计算这些长度之间的差异在这里:

ulong hash1 = AverageHash(theImage);
ulong hash2 = AverageHash(theOtherImage);

uint BitCount(ulong theNumber)
{
    uint count = 0;
    for (; theNumber > 0; theNumber >>= 8) {
        count += bitCounts[(theNumber & 0xFF)];
    }
    return count;
}

Console.WriteLine("Similarity: " + ((64 - BitCount(hash1 ^ hash2)) * 100.0) / 64.0 + "%");
Run Code Online (Sandbox Code Playgroud)

挑战是我只知道其中一个哈希,我想查询SOLR以找到相似顺序的其他哈希值.

几点说明:

  1. 在这里使用SOLR(只有我有的替代品是HBASE)
  2. 想避免在solr中安装任何自定义java(很高兴安装现有的插件)
  3. 很高兴在C#中进行大量的预处理
  4. 很高兴使用多个字段将数据存储为位串,长串等
  5. 使用SOLRNet作为客户端

编辑,一些额外的信息(道歉我陷入了问题并开始假设它是一个广为人知的领域).这是直接下载到C#console/sample app:http://01101001.net/Imghash.zip

此控制台应用程序的示例输出将是:

004143737f7f7f7f phash-test-001.jpg
0041417f7f7f7f7f phash-test-002.jpg
相似度:95.3125%

c# solr bit-manipulation solrnet phash

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