这种密码检查算法可以安全地在本地网络等低安全性环境中使用
static string keys = "qwertyuiopüõasdfghjklöäzxcvbnmQWERTYUIOPÜÄÖLKJHGFDSAZXCVBNM";
static Int64 key = 0;
public static bool check(string input)
{
string tmp = "";
string encAnswer = "ỬốỒởỐỚ";
for (int i = 0; i < input.Length; i++)
{
tmp += keys.IndexOf(input[i]).ToString();
}
key = Int64.Parse(tmp);
string res = "";
char c;
for (int i = 0; i < input.Length; i++)
{
c = input[i];
c = (char)(c ^ key);
res += c;
}
if (res == encAnswer)
return true;
return false;
}
答案 0 :(得分:3)
混淆不是安全性。
您描述的XOR机制是未来痛苦和尴尬的秘诀。您应该避免使用它并使用.NET和Windows平台的内置功能来实现安全性。
与您所描述的安全方法相关的问题是,对系统的大多数攻击都发生在组织内部。您认为您的应用程序需要密码机制这一事实意味着安全性是一个相关的考虑因素。如果安全确实相关,为什么选择安全幻觉 - 花更多的精力来获得真实的东西。
以下是完整九码的原因:
打破XOR“加密”方案的技术,比如你在互联网上描述的那种方案,并且它需要很少的知识和访问来打破这样的方案。
如果成功,您的应用程序可能会增加到比您可能想象的更多的用户 - 不要相信所有这些用户都会友好并遵守规则。
一旦投入生产,对现有系统的更改很难证明并且比代码发布之前更难。 添加缺少的功能也比更改现有功能更容易。
信任很难(或不可能)重新获得。安全漏洞的价格通常与实施安全性的价格不成比例。一旦系统的安全性或保护用户身份/信息的能力失去信任,应用程序功能的好坏并不重要,人们将对整个系统失去信心。
答案 1 :(得分:1)
即使在低安全性环境中,您也应该坚持使用哈希算法。看看SHA256 Class
请注意,您将无法使用哈希算法恢复原始密码。
编辑:正如OP所指出的,仅使用哈希算法是不够的。你必须加盐才能使它更难破碎。可以在此处找到一些示例:How To: Hash Data with Salt (C#/VB.NET)
答案 2 :(得分:0)
它大致相当于用作公寓门上“锁”的胶带。如果您有“低安全性”要求,为什么不完全跳过密码检查?
答案 3 :(得分:0)
我刚刚发现有相当广泛的数据库和哈希码,所以这让Rubens Farias解决方案对我无用
http://askcheck.com/hash?hash=WOLAND
即使是照明灯也许可以改善家庭的安全性。特别是当窃贼已经闯入时。