【发布时间】:2012-07-29 13:43:51
【问题描述】:
我有一个问题...有点基本,但我想我可以向你们寻求帮助
我正在加密一个文件,我加密的信息是
LoginTxtBox.Text + "/" + PwdTxtBox.Text + "/" + InstNameTextBox.Text + "/" + DBNameTxtBox.Text;
当我解密时……我在做:
StringBuilder sClearText = new StringBuilder();
encryptor.Decrypt(sPrivateKeyFile, sDataFile, sClearText);
//username/password
string s = sClearText.ToString();
string[] split = s.Split(new Char[] { '/' });
if (split.Length == 4)
{
split0 = split[0];
split1 = split[1];
split2 = split[1];
split3 = split[1];
现在我得到的要求是我需要以字符串的解密格式计算分隔符,如果有超过 2 个分隔符,那么它不是一个新应用程序。如果只有一个分隔符,那么它是一个从未使用过的应用程序。我不知道如何计算解密字符串中的分隔符......请帮帮我
【问题讨论】:
-
您显示的代码隐含地知道分隔符的数量,不是吗? (
split.Length - 1) ;) -
旁注:使用几乎任何可打印的字符来分隔用户输入的字符串是个坏主意。请考虑适当的序列化以避免各种注入问题(即密码“a/b”对您的系统来说非常棒)。
-
@Dan 是的!寻找更多方法来做到这一点 Regex.Matches(s, "/" ).Count 。这非常有效。谢谢你的时间:)
-
@AlexeiLevenkov 是的先生。谢谢您的建议 :)
-
@user1410658:还请阅读this previous question about storing encrypted passwords 的答案。基本上,即使您正在加密密码,除非您使用加密强度高的单向哈希算法,否则您做错了。
标签: c#