c# 賬號密碼加密, 寫入讀取ini檔案
阿新 • • 發佈:2018-12-30
[DllImport("kernel32")] private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retvalue, int siz, string inipath); [DllImport("kernel32")] private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
private static string m_iniPath = System.Windows.Forms.Application.StartupPath + "\\config.ini";//配置路徑 //寫INI檔案 public static void IniWriteValue(string Section, string Key, string Value) { WritePrivateProfileString(Section, Key, Value, m_iniPath); } //讀取INI檔案指定 public static string IniReadValue(string Section, string Key) { StringBuilder temp = new StringBuilder(255); int i = GetPrivateProfileString(Section, Key, "", temp, 255, m_iniPath); return temp.ToString(); }
以上為Config類檔案內。
Config.IniWriteValue("UserName", "account", account);//寫入密碼不加密 private string passwdKey = "asfafagsgdsgkhk"; //加密的祕鑰</span> StringBuilder ps = new StringBuilder(); for (int i = 0; i < passwd.Length; ++i) { int c = passwd[i] ^ passwdKey[i]; //異或加密,使用int儲存 ps.Append(c + " "); } Config.IniWriteValue("PassWord", "passwd", ps.ToString()); string account = Config.IniReadValue("UserName", "account"); string passwd = Config.IniReadValue("PassWord", "passwd");
//讀取密碼需要解密
string[] ps = passwd.Split(' ');
StringBuilder sb = new StringBuilder();
for (int i = 0; i < ps.Length; i++)
{
sb.Append((char)(passwdKey[i] ^ int.Parse(ps[i]))); //異或解密, 轉換成char
}
passwd = sb.ToString();