打开刚刚编译的.net应用程序只是为了好玩,并在文件的二进制结构中找到了下一个:
我刚刚使用了我的 HTTP 解析器工具,我正在使用子字符串搜索算法进行训练,并在不同的地方找到了一些人类“Ivan Medvedev”的真实姓名。
它是什么?
打开刚刚编译的.net应用程序只是为了好玩,并在文件的二进制结构中找到了下一个:
我刚刚使用了我的 HTTP 解析器工具,我正在使用子字符串搜索算法进行训练,并在不同的地方找到了一些人类“Ivan Medvedev”的真实姓名。
它是什么?
他是一名安全专家,在谷歌工作,之前在微软工作。他的名字出现在他在 Codeproject 上发布的这个项目中用于初始化 PasswordDeriveBytes 的字节中:
PasswordDeriveBytes pdb = new PasswordDeriveBytes(Password,
new byte[] {0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d,
0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76});
看起来很熟悉?这最终在程序的元数据表中逐字记录,当您查看可执行文件并位于文件的早期时,以纯文本形式显示。不好。他在文章中对此提出警告:
一些密码学特定的考虑因素也应该在那里。例如,PasswordDeriveBytes 中的盐值最好是随机的而不是硬编码的(有时可以硬编码,例如,当加密很少发生并且攻击者无法访问代码时)。如果盐是随机的并且经常更换,你甚至不必保密。此外,如果可能,请使用 byte[] 键而不是密码。由于人为因素,基于密码的加密并不是保护信息的最安全方式。为了从密码中获取 128 位的密钥信息,密码必须很长。如果您只使用每个字符大约 5 位信息的小写字母,那么您的密码必须超过 25 个字符才能达到 128 位。
嗯,你知道为什么。这是他的样子: