我试图找出应该在桌面应用程序中存储应用程序机密和密钥的位置或方式.
例如,Facebook应用程序密钥或Dropbox密钥和密钥.
所以我读过我应该哈希,加盐,加密等等这些值.这是为了防止有人对我的代码进行逆向工程并查看密钥.
这一切都很好,但是通过所有这些方法,我只是在某处存储salt或hash值而不是密钥本身.当然,如果黑客可以获得salt/hash和可能的源代码,他们将能够解密加密的密钥并获得我的密码/密钥/秘密吗?
我读过的一个选项似乎最安全的是根本不将这个值存储在桌面应用程序中,而是调用Web服务来获取密钥(可能是加密的).但我的问题是,即使在这种情况下,一个体面的黑客肯定会只是做一个内存转储或什么来看看从Web服务返回的值是什么,然后我们回到第1方.
下一个最好的选择似乎是默默无闻.
我完全错过了什么吗?
另外,facebook/twitter/dropbox/etc密钥/秘密对黑客有什么用处呢?当然,他们仍然需要用户的凭据或访问令牌才能使用它?
任何建议或意见将不胜感激.
我的代码看起来像这样:
using (var session = DocumentStore.OpenSession())
{
var dbItem = session.Load<dynamic>(item.Id);
if (dbItem is DynamicJsonObject)
{
dbItem["PropertyName"] = "new value";
}
session.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚的是如何更新dbItem的属性.
有谁知道该怎么办?我试过直接访问属性名称,如下所示:dbItem.PropertyName我也试过转换为ExpandoObject,IDictionary等.但似乎没有任何效果.
我有以下测试用例,我希望通过.但它没有通过RavenDB.
如果我使用MsSql创建完全相同的测试,它确实通过.
var connectionString = "Url=http://localhost:8080";
var store = new DocumentStore();
store.ParseConnectionString(connectionString);
store.Initialize();
using (var scope = new TransactionScope())
using (var session = store.OpenSession())
{
session.Store(dog);
session.SaveChanges();
var dogs = session.Query<Dog>().Customize(x => x.WaitForNonStaleResults()).ToList();
Assert.AreEqual(1, dogs.Count);
scope.Complete();
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试编写一些相同的代码,无论我选择什么数据库,这只是我试图通过的测试用例的一个例子.
我尝试过各种各样的东西,比如waitfornonstaleresults,以及allownonautheitative..something等等.
我有以下问题我想解决.
我有2个(或更多)矩阵; a和b.
每个矩阵都有列,行和值(利润).
我想用prolog找到2个不同矩阵中2列的组合,这将给我最多的正利润.
矩阵B中的矩阵A + ColumnY中的IE ColumnX,然后我计算结果列中具有正数的值的数量.IE我添加了同一行的值.
我把下面的代码放到我迄今为止尝试过的(以及它的链接),但是我的函数count_profits(ColA,ColB,P)没有返回预期的结果.以下查询应返回P = 2,但返回P = 1.
count_profits(66,65.5,P).
Run Code Online (Sandbox Code Playgroud)
现在我正在为每个要使用的矩阵提供列索引.最终我想要一个名为best_profit(ColA,ColB)的函数,该函数应该给出矩阵A中的列和矩阵B中的列,这样可以在组合时产生最多的正结果.根据我的测试数据,如果我是正确的,这应该导致ColA = 66和ColB = 65.5.
% Data sets
% a(Column, Row, Profit)
% b(Column, Row, Profit)
a(65, 66, -0.82).
a(65, 65.5, -1.32).
a(65, 65, -1.82).
a(65.5, 66, -1.07).
a(65.5, 65.5, -1.57).
a(65.5, 65, -1.57).
a(66, 66, -1.3).
a(66, 65.5, -1.3).
a(66, 65, -1.3).
b(65, 66, -1).
b(65, 65.5, -0.5).
b(65, 65, 1.72). …Run Code Online (Sandbox Code Playgroud)