рдЖрдкрдХрд╛ рджрд┐рди рд╢реБрдн рд╣реЛ!
рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА Habrahabr рдкрд░ рд▓реЗрдЦ рд╣реИрдВ рдФрд░ рдореИрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рдЕрдкрдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рддреЛ, рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
рд╕рд╛рдорд╛рдиреНрдп рдЬрд╛рдирдХрд╛рд░реА
рд╕реНрдЯреЗрдЧреНрдиреЛрдЧреНрд░рд╛рдлрд╝рд┐рдХ рдкреНрд░рдгрд╛рд▓реА (рд╕реНрдЯреЗрдЧреЛрд╕рд┐рд╕реНрдЯрдо) - рд╕реВрдЪрдирд╛ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧреБрдкреНрдд рдЪреИрдирд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рддрд░реАрдХреЛрдВ рдФрд░ рд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдПрдХ рд╕рдВрдпреЛрдЬрдиред рдЖрдЬрдХрд▓, рдбрд┐рдЬрд┐рдЯрд▓ рд╡реЙрдЯрд░рдорд╛рд░реНрдХ рдХреЛ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдЕрдХреНрд╕рд░ рд╕реНрдЯреЗрдЧреНрдиреЛрдЧреНрд░рд╛рдлрд╝реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХреЙрдкреАрд░рд╛рдЗрдЯ рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдФрд░ DRM (рдбрд┐рдЬрд┐рдЯрд▓ рдЕрдзрд┐рдХрд╛рд░ рдкреНрд░рдмрдВрдзрди) рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рд╣реИред
рд╣рдо рдПрд▓рдПрд╕рдмреА рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВрдЧреЗред
рдПрд▓рдПрд╕рдмреА (рдХрдо рд╕реЗ рдХрдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдЯ), рдХрдо рд╕реЗ рдХрдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдЯ - рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рд╕рд╛рд░ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЕрдВрддрд┐рдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдЯреНрд╕ (рдЫрд╡рд┐, рдСрдбрд┐рдпреЛ рдпрд╛ рд╡реАрдбрд┐рдпреЛ) рдХреЛ рдЫрд┐рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрджреЗрд╢ рдХреЗ рдмрд┐рдЯреНрд╕ рдХреЗ рд╕рд╛рде рдмрджрд▓рдирд╛ рд╣реИред рдЦрд╛рд▓реА рдФрд░ рдкреВрд░реНрдг рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ рдорд╛рдирд╡ рд╕рдВрд╡реЗрджреА рдЕрдВрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╣рдо рдПрдХ рдРрд╕реА рдлрд╝рд╛рдЗрд▓ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕рдореЗрдВ bmp рдХреЗ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди / рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдХреЗ рд▓рд┐рдП рдкреИрд▓реЗрдЯ рдирд╣реАрдВ рд╣реИред рдРрд╕реА bmp рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ 3 рдмрд╛рдЗрдЯреНрд╕ 3 рдкрд┐рдХреНрд╕реЗрд▓ рд░рдВрдЧ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рддреИрдпрд╛рд░реА
рдЪреВрдВрдХрд┐ рд╣рдо рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдмрд┐рдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдПрдХ рдкрд┐рдХреНрд╕реЗрд▓ рдХрд╛ рд░рдВрдЧ рдПрдХ рдмрд╛рдЗрдЯ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд▓реЗрддрд╛ рд╣реИ, рд╣рдореЗрдВ рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рдмрд┐рдЯреНрд╕ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЬреЛ рдиреАрдЪреЗ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдП рдЧрдП рд╣реИрдВ:
private BitArray ByteToBit(byte src) { BitArray bitArray = new BitArray(8); bool st = false; for (int i = 0; i < 8; i++) { if ((src >> i & 1) == 1) { st = true; } else st = false; bitArray[i] = st; } return bitArray; } private byte BitToByte(BitArray scr) { byte num = 0; for (int i = 0; i < scr.Count; i++) if (scr[i] == true) num += (byte)Math.Pow(2, i); return num; }
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рд╣реИрдВ рдФрд░ рд╕рдордЭрд╛рдиреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИрдВред
рдФрд░ рдЗрд╕рд▓рд┐рдП, bmp рдЬрд╛рдирдХрд╛рд░реА рдореЗрдВ рд╕реНрдерд╛рди рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реЛрдЧрд╛:
- рдкрд┐рдХреНрд╕реЗрд▓ 0.0: рдПрдХ рд╕рдВрдХреЗрдд рд╣реИ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд╛рда рдЬрд╛рдирдХрд╛рд░реА рд╣реИред рдЪрд┐рдиреНрд╣ / рдХрд╛ рдкреНрд░рдпреЛрдЧ рдЪрд┐рдиреНрд╣ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
- рдкрд┐рдХреНрд╕реЗрд▓ 0.1 - 0.3: рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд┐рдЦреА рдЧрдИ рдкрд╛рда рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЖрдХрд╛рд░
- рдкрд┐рдХреНрд╕реЗрд▓ 0.4 рдФрд░ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ: рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд╛рда рдЬрд╛рдирдХрд╛рд░реА
рдЗрд╕рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдХреЛрдб рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬреЛ рдкрд┐рдХреНрд╕реЗрд▓ 0.0 рдореЗрдВ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдлрд╝рд╛рдЗрд▓ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рд▓рд┐рдЦрддрд╛ рд╣реИред
byte [] Symbol = Encoding.GetEncoding(1251).GetBytes("/"); BitArray ArrBeginSymbol = ByteToBit(Symbol[0]); Color curColor = bPic.GetPixel(0, 0); BitArray tempArray = ByteToBit(curColor.R); tempArray[0] = ArrBeginSymbol[0]; tempArray[1] = ArrBeginSymbol[1]; byte nR = BitToByte(tempArray); tempArray = ByteToBit(curColor.G); tempArray[0] = ArrBeginSymbol[2]; tempArray[1] = ArrBeginSymbol[3]; tempArray[2] = ArrBeginSymbol[4]; byte nG = BitToByte(tempArray); tempArray = ByteToBit(curColor.B); tempArray[0] = ArrBeginSymbol[5]; tempArray[1] = ArrBeginSymbol[6]; tempArray[2] = ArrBeginSymbol[7]; byte nB = BitToByte(tempArray); Color nColor = Color.FromArgb(nR, nG, nB); bPic.SetPixel(0, 0, nColor);
рдкреНрд░рддреАрдХ рдЪрд░ рдореЗрдВ рдХреЛрдб рдореЗрдВ рдкреНрд░рддреАрдХ рдХреЛрдб "/" рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рдж, рдпрд╣ рдХреЛрдб рдмрд┐рдЯреНрд╕ (ArrBeginSymbol рдЪрд░) рдХреА рдПрдХ рд╕рд░рдгреА рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред рдкрд┐рдХреНрд╕реЗрд▓ 0.0 рдХрд╛ рд░рдВрдЧ рдХрд░реНрдХрд░рд▓ рд╡реИрд░рд┐рдПрдмрд▓ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣рд┐рдд рд╣реИред рдЕрдЧрд▓рд╛, рдкрд┐рдХреНрд╕реЗрд▓ рдХреЗ рддреАрди рдШрдЯрдХ рд░рдВрдЧреЛрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рдмрд┐рдЯреНрд╕ рдХреЗ рдПрдХ рд╕рд░рдгреА рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдлрд┐рд░ рдирд┐рдЪрд▓реЗ 2 рдмрд┐рдЯреНрд╕ рдХреЛ рд▓рд╛рд▓ рд░рдВрдЧ рдореЗрдВ "/" рдЪрд┐рдиреНрд╣ рдХреЗ рдмрд┐рдЯреНрд╕ рджреНрд╡рд╛рд░рд╛ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдирд┐рдЪрд▓реЗ 3 рдмрд┐рдЯреНрд╕ рдХреЛ "/" рдкреНрд░рддреАрдХ рдХреЗ рдмрд┐рдЯреНрд╕ рджреНрд╡рд╛рд░рд╛ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд░рдВрдЧ рдХреЗ рдирд┐рдЪрд▓реЗ рдмрд┐рдЯреНрд╕ рдХреЛ рднреА рдиреАрд▓реЗ рд░рдВрдЧ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред 3 рдирдП рдкреНрд░рд╛рдкреНрдд рд░рдВрдЧреЛрдВ рд╕реЗ, рдПрдХ рдирдпрд╛ рдкрд┐рдХреНрд╕реЗрд▓ рд░рдВрдЧ (nColor) рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдкрд┐рдЫрд▓реЗ рд░рдВрдЧ рдХреЗ рдмрдЬрд╛рдп рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕рдм рдХреБрдЫ, рдПрдХ рд╕рдВрдХреЗрдд рдЬреЛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╣реИ рд╡рд╣ bmp рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд┐рдЦреА рдЧрдИ рд╣реИред
рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреА рдЬрд╛рдирдХрд╛рд░реА, рдпрд╛рдиреА 2 рдмрд┐рдЯреНрд╕, 3 рдмрд┐рдЯреНрд╕ рдФрд░ 3 рдмрд┐рдЯреНрд╕ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдЪрдпрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕реВрдЪрдирд╛ рдХрд╛ рдПрдХ рдмрд╛рдЗрдЯ рддреБрд░рдВрдд рдПрдХ рдкрд┐рдХреНрд╕реЗрд▓ рдореЗрдВ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЕрдЧрд▓рд╛, рд╣рдо рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ
private bool isEncryption(Bitmap scr) { byte[] rez = new byte[1]; Color color = scr.GetPixel(0, 0); BitArray colorArray = ByteToBit(color.R);
рд╡рд┐рдзрд┐ рд╕рдЯреАрдХ рд╡рд┐рдкрд░реАрдд рдХреЗ рд╕рд╛рде рдКрдкрд░ рджрд┐рдП рдЧрдП рдХреЛрдб рдХреЗ рд╕рдорд╛рди рд╣реИред рдпрджрд┐ рд╡рд░реНрдг "/" рдкрд┐рдХреНрд╕реЗрд▓ 0.0 рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдлрд╝рдВрдХреНрд╢рди рд╕рд╣реА рд╣реИ, рдЕрдиреНрдпрдерд╛ рдЧрд▓рдд рд╣реИред
рдЗрд╕рдХреЗ рдмрд╛рдж, рдЯреЗрдХреНрд╕реНрдЯ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЖрдХрд╛рд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдзрд┐ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
private void WriteCountText(int count, Bitmap src) { byte[] CountSymbols = Encoding.GetEncoding(1251).GetBytes(count.ToString()); for (int i = 0; i < 3; i++) { BitArray bitCount = ByteToBit(CountSymbols[i]);
CountSymbols рд╕реНрд░реЛрдд рдкрд╛рда рдХреЗ рд╡рд░реНрдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд░рд┐рдХреЙрд░реНрдб рдХрд░рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдЕрдВрдХ рдПрдХ рдмрд╛рдЗрдЯ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕реНрд░реЛрдд рдкрд╛рда рдХреА рдЕрдзрд┐рдХрддрдо рд▓рдВрдмрд╛рдИ 999 - 4 = 995 рд╡рд░реНрдг рд╣реИ (рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рдВрдХреЗрдд рдХреЗ рд▓рд┐рдП 4 рдкрд┐рдХреНрд╕реЗрд▓ рд╣реИ рдФрд░ рдкрд╛рда рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рд▓рд┐рдП рддреАрди рдкрд┐рдХреНрд╕реЗрд▓ рд╣реИрдВ)ред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЖрдк рдЗрд╕реЗ рдкрд┐рдХреНрд╕реЗрд▓ 0.1 рд╕реЗ 0.3 рддрдХ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди 0.1 рд╕реЗ 0.4 рддрдХ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдФрд░ рдЗрд╕реА рддрд░рд╣ред рдПрдХ рд▓реВрдк рдХреЗ рд▓рд┐рдП, рд╕реНрд░реЛрдд рдкрд╛рда рдХреА рдорд╛рддреНрд░рд╛ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЕрдВрдХ рдХреЛ рдмрд┐рдЯреНрд╕ рдХреА рдПрдХ рд╕рд░рдгреА рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдирд┐рдЪрд▓реЗ рд░рдВрдЧ рдХреЗ рдкрд┐рдХреНрд╕рд▓ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдкрд╛рда рд╕реВрдЪрдирд╛ рдЖрдХрд╛рд░ рдкрдврд╝рдиреЗ рдХреА рд╡рд┐рдзрд┐:
private int ReadCountText(Bitmap src) { byte[] rez = new byte[3];
WriteCountText рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд░рд┐рд╡рд░реНрд╕ рддрд░реАрдХрд╛ред рд╕рдордЭрд╛рдУ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИред
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рд╣рдо рдЙрд╕ рдХреЛрдб рдХреЛ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ рдЬреЛ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЦреЛрд▓рддрд╛ / рдмрдВрдж рдХрд░рддрд╛ рд╣реИ, рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдХреЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдПрдХ рдХреЛрдб рд╣реИ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд▓рд┐рдЦрддрд╛ рд╣реИред рдХреБрдЫ рдХреЛрдб рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдКрдкрд░ рджрд┐рдП рдЧрдП рд╣реИрдВред
рдмрд┐рдЯрдореИрдк bPic - рдЪрд┐рддреНрд░ рдХреЗ рд╕рд╛рде рдПрдХ рдЦреБрд▓реА рдлрд╝рд╛рдЗрд▓ред
BinaryReader bText = new BinaryReader(rText, Encoding.ASCII); List<byte> bList = new List<byte>(); while (bText.PeekChar() != -1) {
рдФрд░, рддрджрдиреБрд╕рд╛рд░, рдХреЛрдб рдЬреЛ рдПрдХ bmp рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдкрдврд╝рддрд╛ рд╣реИ
Bitmap bPic = new Bitmap(rFile); if (!isEncryption(bPic)) { MessageBox.Show(" ", "", MessageBoxButtons.OK); return; } int countSymbol = ReadCountText(bPic);
рдирд┐рд╖реНрдХрд░реНрд╖
LSB рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ bmp рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдЫрд┐рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╡рд┐рдзрд┐ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рджреЛрд╖ рдпрд╣ рд╣реИ рдХрд┐ рдмреАрдПрдордкреА рдХрд╛ рдЖрдХрд╛рд░ рдмрдбрд╝рд╛ рд╣реИ, рдЬреЛ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЧреЛрдкрдиреАрдп рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдЕрдиреБрдкрдпреБрдХреНрдд рдмрдирд╛рддрд╛ рд╣реИред
рд╕реНрд╡рдпрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ:
drive.google.com/file/d/0B-i4aT8Q0ZNxdDRiUTc2WUs2OTA/view?usp=sharingрд╕рдВрдЧреНрд░рд╣ рдореЗрдВ 2 рдЪрд┐рддреНрд░ рд╣реИрдВ, рдПрдХ рдкрд╛рда рдХреЗ рд╕рд╛рде, рджреВрд╕рд░рд╛ рдмрд┐рдирд╛ред