如果Node crypto.PBKDF2使用HMAC SHA-1,那么密钥长度如何超过20个字节?
这是我理解的(显然不正确):crypto.PBKDF2(password, salt, iterations, keylen, callback)使用HMAC SHA-1用盐哈希密码.然后,它需要的是哈希和哈希它具有相同的盐.它会重复这一点,无论你告诉它多少次迭代,然后将结果传回给你.结果将截断为您指定的字节数keylen.
SHA-1输出160位或20个字节.但是,我可以要求keylen超过20个字节crypto.PBKDF2,并且在第20个字节之后,数据不会重复.这对我来说没有意义.
我在这里误解了什么?
试试看:
c.pbkdf2('password', 'salt', 1, 21, function(err, key) {
for (var i = 0; i < key.length; i++) {
console.log(key[i].toString(36));
}
});
Run Code Online (Sandbox Code Playgroud)
我希望在第20个字节之后看到某种模式,但我没有.
我有以下代码从密码创建哈希,然后将其与数据库中存储的哈希密码进行比较.所有工作都优于http.这适用于在c#4.0下运行的asp.net webforms应用程序
HMACSHA1 hash = new HMACSHA1();
hash.Key = Encoding.Unicode.GetBytes(password);
encodedPassword = Convert.ToBase64String(hash.ComputeHash(Encoding.Unicode.GetBytes(password)));
Run Code Online (Sandbox Code Playgroud)
但是,当通过https/ssl运行时,编码的密码不同,因此用户无法登录.
在通过SSL时计算哈希时,.net框架是否会做一些不同的事情?
如果我单步执行代码并复制编码密码并更新我的数据库然后通过SSL我可以登录.
有任何想法吗?
非常感谢
我有一个.txt.enc文件.当我尝试在像Emacs这样的文本编辑器中打开它时,我会得到任意数量的字符和数字.实际上它是加密的.我也尝试过openssl命令行工具,但它们也没有给出正确的结果.
有谁知道我怎么能打开这样的文件?
嗨,我是OpenCV的新手,我正在尝试使用放置在固定位置的相机来实现人体跟踪.我做了一些研究,我遇到了直方图梯度方法,但根据我的理解,它的作用是检测而不是跟踪.因此,我想知道在OpenCV上实现人工检测和跟踪的最简单方法是什么?
P/S:我发现了这个视频,这正是我想要实现的目标.
MIB有免费的可视化工具吗?我已经被分配了一些SNMP陷阱规范化/浓缩工作,并开始使用Cisco ONS 15454s.MIB似乎比我见过的其他人更复杂.大量对象交叉引用,包括一些在其他MIB中定义并导出的对象.尝试追踪警报端口号的快速示例:
报警定义:
Cerent454AlarmEntry ::= SEQUENCE {
cerent454AlarmIndex INTEGER,
cerent454AlarmObjectType Cerent454EntityClass,
cerent454AlarmSlotNumber INTEGER,
cerent454AlarmPortNumber CerentPortNumber,
cerent454AlarmLineNumber INTEGER,
cerent454AlarmObjectIndex INTEGER,
cerent454AlarmType Cerent454AlarmType,
cerent454AlarmState CerentNotificationClass,
cerent454AlarmTimeStamp TimeStamp,
cerent454AlarmObjectName DisplayString,
cerent454AlarmAdditionalInfo DisplayString
}
Run Code Online (Sandbox Code Playgroud)
CerentPortNumber引用来自同一个文件(CERENT-454.mib):
IMPORTS
(...)
CerentPortNumber
FROM CERENT-TC
(...)
cerent454AlarmPortNumber OBJECT-TYPE
SYNTAX CerentPortNumber
ACCESS read-only
STATUS mandatory
DESCRIPTION
"This will indicate what is the port
of the object which raised this alarm."
::= { cerent454AlarmEntry 40 }
Run Code Online (Sandbox Code Playgroud)
CerentPortNumber的实际语法,来自CERENT-TC.mib:
CerentPortNumber ::=
INTEGER
{ unknown (1),
port0 (5),
port1 (10),
port2 (20),
(...) …Run Code Online (Sandbox Code Playgroud) 我创建了一个由Lua解释器操作的交互式命令shell.用户输入一些命令,shell调用类似lua_dostring执行它的东西.我想允许用户在任意表中定义自己的函数,并自动将其保存到单独的存储(如文件)中.根据手册,我可以得到用户输入的确切源代码lua_Debug.
完成所有执行后,可以将函数源保存到某些文件中.但我想在添加/删除时自动保存.
我可以检测到某个值刚刚添加到表中的时刻吗?
我需要以编程方式确定数据库是否支持Geography数据类型和Spatial索引.这些功能是在2008年推出的.我还需要确定是否启用了CLR,因为这些功能依赖于它.最可靠的方法是什么?
我的Galaxy S2有问题.我通常将它保留在调试模式,直到几天前它运行良好.我之前通过eclipse成功加载了APK以进行测试.
我试图加载一个新的应用程序的原型即时工作,当我插入S2时没有发生任何事情,Windows没有像往常一样发出哔哔声,当我试图查看运行设备它没有显示.
当我查看通用串行总线控制器下的设备管理器时,它不会显示任何"未知设备"
我已经尝试通过kies和第三方来源重新安装驱动程序(以及删除所有驱动程序并让Windows再次为我安装它们.
我尝试连接大容量存储设备,打开和关闭调试模式.
我已多次重启我的电脑和手机.
当我的手机关闭并插入Windows时,会发出哔声并说设备已连接但无法识别(这比手机开机时更多)
有时当我在Kies中"解决连接问题"时,它将重新安装驱动程序,并且在完成该过程后,Windows将报告"驱动程序未成功安装"
我已经尝试将其插入我的Windows XP笔记本电脑中,即使我在笔记本电脑上安装了Kies,它也会显示为"无法识别的设备",并尝试使用相同的结果安装驱动程序.
发布在这里是我的最后一招,因为我花了将近5个小时来解决这个问题,并寻找答案.我最担心的是,当我插上手机时,它会发出嘟嘟声,说它正在充电,但是Windows 7甚至看不到它!
我感谢所有的建议和帮助!
编辑:我也安装了适用于Windows的三星Android USB驱动程序和Windows报告驱动程序未成功安装
谢谢乔恩
可能重复:
为.NET语言构建调试器有什么好方法?
我有一个Lisp风格的语言,我想为它构建一个调试器.我的语言在这里 - https://github.com/bryanedds/aml.
我可能会把它编译成IL.如果它对编写调试器很有帮助,我会先编写编译器.但是,我想知道构建调试器的方法是什么.我看着为Visual Studio构建它,但这很困难,因为它似乎要求我通过COM与VS连接,这意味着我需要用C或C++编写调试器(UGH!).我希望Visual Studio Debugger开发有一个我不知道的更好的故事.
在SO上查看关于.NET调试的其他线程,我看到IL包含源文件坐标,所以我想知道这是否意味着我不需要编写尽可能多的COM代码(EG - 步骤调试工作了)没有任何COM代码的框,只要编译的IL具有源文件坐标).
或者,我可以看一下使用另一个IDE,它可能有更快乐的.NET语言调试路径.有Eclipse,但它似乎没有任何特定的.NET语言调试支持.
也许具有最佳调试器构建故事的IDE可能是MonoDevelop.当然,我需要它来使用MS .NET而不仅仅是Mono.但是,它的文档相当简单.有人有建立调试器的经验吗?
所以,正如你所看到的,我宁愿迷失在这一切之中.我只需要一些方法来构建一个简单的调试器,其中包含断点和步进调试,并对我的.NET语言进行可变检查.我更喜欢在F#中编写大部分代码,因为这就是我的语言.
我一直在玩一些算法,以获得最大的总和,而阵列中没有两个相邻的元素,但我在想:
如果我们有一个包含n个元素的数组,并且我们想要找到最大的总和,那么3个元素永远不会触及.也就是说如果我们有数组a = [2,5,3,7,8,1]我们可以选择2和5而不是2,5和3,因为那时我们连续3个.这个数组的这些规则的总和将是:22(2和5,7和8. 2 + 5 + 7 + 8 = 22)
我不确定如何实现这个,任何想法?
编辑:
我只是想到可能会做的事情:
让我们坚持使用相同的数组:
int[] a = {2, 5, 3, 7, 8, 1};
int{} b = new int[n}; //an array to store results in
int n = a.length;
// base case
b[1] = a[1];
// go through each element:
for(int i = 1; i < n; i++)
{
/* find each possible way of going to the next element
use Math.max to take the "better" option to …Run Code Online (Sandbox Code Playgroud)