рд▓рдЧрднрдЧ рджреЛ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╕рд┐рд▓реНрд╡рд░рд▓рд╛рдЗрдЯ рдкрд░ рдПрдХ рдирд┐рдЬреА рдбрд╛рдпрд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдпрд╛ рдерд╛ред рдЬрд┐рди рд▓реЛрдЧреЛрдВ рдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдореИрдВ рдЕрдкрдирд╛ рдирд┐рд░реНрдгрдп рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЕрдиреБрднрд╡ рд╕реЗ рдЬрд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдПрдХ рдбрд╛рдпрд░реА рдХрд╛ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдЬрд▓реНрджреА рд╕реЗ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдирдпрд╛ рд░рд┐рдХреЙрд░реНрдб рдЬреЛрдбрд╝рдирд╛ рд╣реИ (рдбрд╛рдпрд░реА рдХреЛ рд╣рд░ рджреЛ рд╕рд╛рд▓ рдореЗрдВ рдПрдХ рдмрд╛рд░ рдкрдврд╝рдирд╛ рд╣реЛрддрд╛ рд╣реИ)ред рдФрд░, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЧреЛрдкрдиреАрдпрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдмреЗрд╣рдж рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдХреЗрд╡рд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рднрд╛рдЧ рд╣реЛрддрд╛ рд╣реИ, рдбреЗрдЯрд╛ рд╕реНрд╡рдпрдВ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЛ рд░рд┐рдХреЙрд░реНрдб рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕реНрдерд╛рдиреАрдп рдлрд╝рд╛рдЗрд▓ рд╕рдВрдкрд╛рджрдХ рд╣реИред
рдЖрдк рдЗрд╕реЗ рдпрд╣рд╛рдВ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ рдЖрдЬрд╝рдорд╛ рд╕рдХрддреЗ рд╣реИрдВ:
www.kalantyr.ru/Diary рдмрд┐рдирд╛ рдХрд┐рд╕реА рдкрдВрдЬреАрдХрд░рдг рдХреЗред
рдореИрдВрдиреЗ рдХрдВрдкреНрдпреВрдЯрд░ (рд╕рд╛рдЗрдХрд┐рд▓) рдХреЗ рдмреАрдЪ рдбреЗрдЯрд╛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдореИрдВ рдбреНрд░реЙрдкрдмреЙрдХреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХреЗрд╡рд▓ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рддрд╛ рд╣реВрдВред рдпрд╛ рдЖрдк рдЗрд╕реЗ рдЕрдкрдиреЗ рд╕рд╛рде рдПрдХ рдлреНрд▓реИрд╢ рдбреНрд░рд╛рдЗрд╡ рдкрд░ рд▓реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ - рдЬрд┐рд╕реЗ рдпрд╣ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред
рдЖрд╢рдВрдХрд╛рдУрдВ рдХреЛ рджреВрд░ рдХрд░рдирд╛: рд╢рд╛рдпрдж рдХреЛрдИ рдХрд╣реЗрдЧрд╛ рдХрд┐ рдЕрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╣реАрдВ рднреА рдХреБрдЫ рднреА рдирд╣реАрдВ рднреЗрдЬрддрд╛ рд╣реИ, рдФрд░ рдХреБрдЫ рдорд╣реАрдиреЛрдВ рдХреЗ рдмрд╛рдж рдпрд╣ рдЪреБрдкрдЪрд╛рдк рд╢реБрд░реВ рд╣реЛ рдЬрд╛рдПрдЧрд╛ ... рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдореИрдВ рд╕реНрд░реЛрдд рднреЗрдЬ рд╕рдХрддрд╛ рд╣реВрдВ, рдореБрдЭреЗ рдХреЛрдИ рдЖрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реИред рдпрд╛ рдмрд╕ рддреИрдпрд╛рд░-рддреИрдпрд╛рд░ рд╕рдВрдХрд▓рд┐рдд xap-рдореЙрдбреНрдпреВрд▓ - рдЗрд╕реЗ рдЕрдкрдиреА рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдкрд░ рд░рдЦреЗрдВ рдФрд░ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдпрд╣рд╛рдВ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рджрд┐рдП рдЧрдП рд╣реИрдВ рдЬреЛ рд╕рд┐рд▓реНрд╡рд░рд▓рд╛рдЗрдЯ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:
dl.dropbox.com/u/5681766/Habr/Diary/01.PNGdl.dropbox.com/u/5681766/Habr/Diary/02.PNGdl.dropbox.com/u/5681766/Habr/Diary/03.PNGdl.dropbox.com/u/5681766/Habr/Diary/04.PNGdl.dropbox.com/u/5681766/Habr/Diary/05.PNGdl.dropbox.com/u/5681766/Habr/Diary/06.PNGрдореЗрд░реЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЯреИрдЧ рдерд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореЗрд░реЗ рд╕рд╛рде рдЯреИрдЧ рдХреЗрд╡рд▓ рдПрдХ рд╢рдмреНрдж рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХ рд╢реАрд░реНрд╖рдХ + рд╡рд┐рд╡рд░рдг рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЯреИрдЧ рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдЙрд╕рдХреА рд╕рдВрдкрд░реНрдХ рдЬрд╛рдирдХрд╛рд░реА рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рд╕рдордп рдЖрдЧреЗ рдмрдврд╝рддрд╛ рд╣реИ, рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпрд╛рдВ рдмрджрд▓рддреА рд╣реИрдВ рддрд╛рдХрд┐ рд╕рд┐рд▓реНрд╡рд░рд▓рд╛рдЗрдЯ рд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдХреБрдЫ рдЕрдзрд┐рдХ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реЛ рд╕рдХреЗ - рдирд┐рдпрдорд┐рдд xml рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛ рдирд┐рд░реНрдпрд╛рдд / рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдпрджрд┐ рдЖрдкрдХреЛ рд╣рдЬрд╛рд░реЛрдВ рдЕрднрд┐рд▓реЗрдЦреЛрдВ рдореЗрдВ рдХреБрдЫ рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЯреИрдЧ / рд╕рдмрд╕реНрдЯреНрд░рд┐рдВрдЧ / рджрд┐рдирд╛рдВрдХ рджреНрд╡рд╛рд░рд╛ рд░рд┐рдХреЙрд░реНрдб рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдирд╛ рд╣реИред
рдПрдХ рдФрд░ рдЕрдкреНрд░рдпреБрдХреНрдд рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ - рдЬрдм рдХреЛрдИ рдкреАрдЫреЗ рдЦрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЖрдк рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдХреАрдкреИрдб рдкрд░ рдкреНрд▓рд╕ рдпрд╛ рдорд╛рдЗрдирд╕ рдмрдЯрди рджрдмрд╛рдХрд░, рдкрд╛рда рдХреЗ рд╡рд┐рдкрд░реАрдд рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдпрд╣ рдЖрдкрдХреЗ рдХрдВрдзреЗ рдкрд░ рдЕрдкрдардиреАрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИ :)
рдЧреЛрдкрдиреАрдпрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ: рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЗ рдбреЗрдЯрд╛ рдХрд╣реАрдВ рднреА рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдм рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╣реЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдбреЗрдЯрд╛ рдПрдИрдПрд╕ рджреНрд╡рд╛рд░рд╛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
private static byte[] Encrypt(IList<byte> key, byte[] data) { using (var encryptor = new AesManaged()) { encryptor.GenerateIV(); encryptor.IV = GetKey(key, encryptor.IV.Length); encryptor.GenerateKey(); encryptor.Key = GetKey(key, encryptor.Key.Length); using (var encryptionStream = new MemoryStream()) using (var encrypt = new CryptoStream(encryptionStream, encryptor.CreateEncryptor(), CryptoStreamMode.Write)) { encrypt.Write(data, 0, data.Length); encrypt.FlushFinalBlock(); encrypt.Close(); return encryptionStream.ToArray(); } } } private static byte[] Decrypt(IList<byte> key, byte[] data) { try { using (var decryptor = new AesManaged()) { decryptor.GenerateIV(); decryptor.IV = GetKey(key, decryptor.IV.Length); decryptor.GenerateKey(); decryptor.Key = GetKey(key, decryptor.Key.Length); using (var decryptionStream = new MemoryStream()) using (var decrypt = new CryptoStream(decryptionStream, decryptor.CreateDecryptor(), CryptoStreamMode.Write)) { decrypt.Write(data, 0, data.Length); decrypt.Flush(); decrypt.Close(); return decryptionStream.ToArray(); } } } catch (CryptographicException) { throw new InvalidOperationException(" ."); } } private static byte[] GetKey(IList<byte> value, int keyLength) { var data = new byte[value.Count * keyLength]; for (var i = 0; i < data.Length; i++) data[i] = value[i % value.Count]; var key = new byte[keyLength]; for (var i = 0; i < key.Length; i++) key[i] = data[i]; return key; }
рдЕрдкрдбреЗрдЯ:
рдпрд╣рд╛рдБ рд╕реНрдерд╛рдиреАрдп рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ (рдЗрдВрдЯрд░рдиреЗрдЯ рдХреЗ рдмрд┐рдирд╛) рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдХрд▓рд┐рдд рдЖрд╡реЗрджрди рд╣реИ:
dl.dropbox.com/u/5681766/Habr/Diary/Diary.zipрдЕрдкрдбреЗрдЯ 2:
рдФрд░ рдпрд╣рд╛рдБ рд╕реНрд░реЛрдд рд╣реИрдВ:
dl.dropbox.com/u/5681766/Habr/Diary/Diary_SourceCode.zip