<?xml version='1.0' encoding='utf-8' ?>
<!--  If you are running a bot please visit this policy page outlining rules you must respect. http://lj.rossia.org/bots/  -->
<rss version='2.0' xmlns:lj='http://www.livejournal.org/rss/lj/1.0/'>
<channel>
  <title>Дневник Шестеро Михаила</title>
  <link>http://lj.rossia.org/users/shestero/</link>
  <description>Дневник Шестеро Михаила - LJ.Rossia.org</description>
  <managingEditor>Дневник Шестеро Михаила</managingEditor>
  <lastBuildDate>Wed, 10 Jun 2015 19:17:55 GMT</lastBuildDate>
  <generator>LiveJournal / LJ.Rossia.org</generator>
  <image>
    <url>http://lj.rossia.org/userpic/192997/36669</url>
    <title>Дневник Шестеро Михаила</title>
    <link>http://lj.rossia.org/users/shestero/</link>
    <width>87</width>
    <height>100</height>
  </image>

<item>
  <guid isPermaLink='true'>http://lj.rossia.org/users/shestero/143150.html</guid>
  <pubDate>Wed, 10 Jun 2015 19:17:55 GMT</pubDate>
  <title>2015 год...</title>
  <link>http://lj.rossia.org/users/shestero/143150.html</link>
  <description>Лесной Домик &lt;span class=&apos;ljruser&apos; style=&apos;white-space: normal;&apos;&gt;&lt;a href=&apos;http://www.livejournal.com/userinfo.bml?user=common_house&apos;&gt;&lt;img src=&apos;http://lj.rossia.org/img/userinfo-lj.gif&apos; alt=&apos;[info]&apos; style=&apos;vertical-align: bottom; border: 0;&apos; /&gt;&lt;/a&gt;&lt;a href=&apos;http://www.livejournal.com/users/common_house/&apos;&gt;&lt;b&gt;common_house@lj&lt;/b&gt;&lt;/a&gt;&lt;/span&gt; (в начале &quot;Общий Дом Друзей&quot;) &lt;a href=&quot;http://hut.shestero.info&quot;&gt;http://hut.shestero.info&lt;/a&gt; был открыт для гостей с конца 2008 по конец 2014 г.&lt;br /&gt;&lt;br /&gt;В 2015 году я приостановил эту деятельность. В настоящий момент Домик стоит пустой.&lt;br /&gt;&lt;br /&gt;Я не решил пока окончательно что делать, но скорее всего буду искать другое место - c речкой и электричеством.&lt;br /&gt;В будущем я скорее всего опять буду принимать гостей в Домике, но новый домик будет приватным, и доступ в него будет только для моих личных знакомых и друзей.&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align:left&quot;&gt;&lt;font size=&quot;-2&quot;&gt;&lt;a href=&quot;http://lj.rossia.org/users/shestero/143150.html&quot;&gt;&lt;img src=&quot;http://lj.rossia.org/numreplies/shestero/143150&quot; border=0 width=20 height=14  alt=&quot;number of comments&quot; style=&quot;border:0px;&quot; /&gt; &lt;strong&gt;Comments&lt;/strong&gt;&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;</description>
  <comments>http://lj.rossia.org/users/shestero/143150.html</comments>
  <lj:mood>sad</lj:mood>
</item>
<item>
  <guid isPermaLink='true'>http://lj.rossia.org/users/shestero/142914.html</guid>
  <pubDate>Fri, 24 Oct 2014 13:08:00 GMT</pubDate>
  <title>Поселения и сообщества, где я успел побывать</title>
  <link>http://lj.rossia.org/users/shestero/142914.html</link>
  <description>Недавно мои тематические блоги &lt;span class=&apos;ljruser&apos; style=&apos;white-space: normal;&apos;&gt;&lt;a href=&apos;http://lj.rossia.org/userinfo.bml?user=ru_ic&apos;&gt;&lt;img src=&apos;http://lj.rossia.org/img/community.gif&apos; alt=&apos;[info]&apos; style=&apos;vertical-align: bottom; border: 0;&apos; /&gt;&lt;/a&gt;&lt;a href=&apos;http://lj.rossia.org/community/ru_ic/&apos;&gt;&lt;b&gt;ru_ic&lt;/b&gt;&lt;/a&gt;&lt;/span&gt; , &lt;span class=&apos;ljruser&apos; style=&apos;white-space: normal;&apos;&gt;&lt;a href=&apos;http://lj.rossia.org/userinfo.bml?user=ru_cohousing&apos;&gt;&lt;img src=&apos;http://lj.rossia.org/img/community.gif&apos; alt=&apos;[info]&apos; style=&apos;vertical-align: bottom; border: 0;&apos; /&gt;&lt;/a&gt;&lt;a href=&apos;http://lj.rossia.org/community/ru_cohousing/&apos;&gt;&lt;b&gt;ru_cohousing&lt;/b&gt;&lt;/a&gt;&lt;/span&gt; и &lt;span class=&apos;ljruser&apos; style=&apos;white-space: normal;&apos;&gt;&lt;a href=&apos;http://lj.rossia.org/userinfo.bml?user=common_house&apos;&gt;&lt;img src=&apos;http://lj.rossia.org/img/community.gif&apos; alt=&apos;[info]&apos; style=&apos;vertical-align: bottom; border: 0;&apos; /&gt;&lt;/a&gt;&lt;a href=&apos;http://lj.rossia.org/community/common_house/&apos;&gt;&lt;b&gt;common_house&lt;/b&gt;&lt;/a&gt;&lt;/span&gt; , а также основной личный блог &lt;span class=&apos;ljruser&apos; style=&apos;white-space: normal;&apos;&gt;&lt;a href=&apos;http://lj.rossia.org/userinfo.bml?user=shestero&apos;&gt;&lt;img src=&apos;http://lj.rossia.org/img/userinfo.gif&apos; alt=&apos;[info]&apos; style=&apos;vertical-align: bottom; border: 0;&apos; /&gt;&lt;/a&gt;&lt;a href=&apos;http://lj.rossia.org/users/shestero/&apos;&gt;&lt;b&gt;shestero&lt;/b&gt;&lt;/a&gt;&lt;/span&gt; перестали быть доступны с территории России вместе со всей блог-платформой &lt;a href=&quot;http://lj.rossia.org&quot;&gt;http://lj.rossia.org&lt;/a&gt; , по решению Роскомнадзора. По секрету скажу, мой личный блог дублировался в ЖЖ &lt;span class=&apos;ljruser&apos; style=&apos;white-space: normal;&apos;&gt;&lt;a href=&apos;http://www.livejournal.com/userinfo.bml?user=shestero&apos;&gt;&lt;img src=&apos;http://lj.rossia.org/img/userinfo-lj.gif&apos; alt=&apos;[info]&apos; style=&apos;vertical-align: bottom; border: 0;&apos; /&gt;&lt;/a&gt;&lt;a href=&apos;http://www.livejournal.com/users/shestero/&apos;&gt;&lt;b&gt;shestero@lj&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;, а остальные ещё можно просматривать из России через публичные анонимайзеры.&lt;br /&gt;Тем не менее, я решил для удобства продублировать список альтернативных поселений и жилищных сообществ, прежняя версия которого была тут: &lt;a href=&quot;http://lj.rossia.org/community/ru_ic/1984.html&quot;&gt;http://lj.rossia.org/community/ru_ic/198&lt;wbr /&gt;4.html&lt;/a&gt; &lt;br /&gt;С этого момента новая версия будет тут: &lt;a href=&quot;http://shestero.livejournal.com/180889.html&quot;&gt;http://shestero.livejournal.com/180889.h&lt;wbr /&gt;tml&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;i&gt;NB Этот список не полный!&lt;/i&gt;&lt;br /&gt;&lt;table&gt;
	&lt;col width=&quot;59*&quot;&gt;
	&lt;col width=&quot;62*&quot;&gt;
	&lt;col width=&quot;45*&quot;&gt;
	&lt;col width=&quot;90*&quot;&gt;
	&lt;tr&gt;
		&lt;td colspan=&quot;4&quot; width=&quot;100%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;&lt;u&gt;&lt;b&gt;Список альтернативных поселений, интересных сообществ и семей, в которых я побывал&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td width=&quot;23%&quot; xheight=&quot;39&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;CENTER&quot;&gt;&lt;b&gt;Название&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;CENTER&quot;&gt;&lt;b&gt;Регион&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;CENTER&quot;&gt;&lt;b&gt;когда&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;CENTER&quot;&gt;&lt;b&gt;тип&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr valign=&quot;TOP&quot;&gt;
		&lt;td width=&quot;23%&quot; xheight=&quot;72&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;&lt;b&gt;Ecovil_kaluga&lt;/b&gt;&lt;br&gt;&lt;br /&gt;&lt;span class=&apos;ljruser&apos; style=&apos;white-space: normal;&apos;&gt;&lt;a href=&apos;http://www.livejournal.com/userinfo.bml?user=ecovil_kaluga&apos;&gt;&lt;img src=&apos;http://lj.rossia.org/img/userinfo-lj.gif&apos; alt=&apos;[info]&apos; style=&apos;vertical-align: bottom; border: 0;&apos; /&gt;&lt;/a&gt;&lt;a href=&apos;http://www.livejournal.com/users/ecovil_kaluga/&apos;&gt;&lt;b&gt;ecovil_kaluga@lj&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Калужская обл.&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;март 2008&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;&amp;quot;индивидуальное&amp;quot;&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr valign=&quot;TOP&quot;&gt;
		&lt;td width=&quot;23%&quot; xheight=&quot;67&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;&lt;b&gt;Китеж&lt;/b&gt;&lt;br&gt;&lt;br /&gt;&lt;a href=&quot;http://www.kitezh.org&quot;&gt;http://www.kitezh.org&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Калужская обл.&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;октябрь 2008&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;поселение из семей с приёмными&lt;br /&gt;			детьми&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr valign=&quot;TOP&quot;&gt;
		&lt;td width=&quot;23%&quot; zght=&quot;87&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;&lt;b&gt;Агнино&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Новгородская&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;февраль 2009&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;&amp;quot;ортодоксальное&amp;quot;&lt;br /&gt;			анастасиевское&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr valign=&quot;TOP&quot;&gt;
		&lt;td width=&quot;23%&quot; zheight=&quot;84&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;&lt;b&gt;Родное&lt;/b&gt;&lt;br&gt;&lt;br /&gt;&lt;a href=&quot;http://ecorodnoe.ru&quot;&gt;http://ecorodnoe.ru&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Владимирская&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;март 2009&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;&amp;quot;Центральное&amp;quot; анастасиевское&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr valign=&quot;TOP&quot;&gt;
		&lt;td width=&quot;23%&quot; zheight=&quot;55&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;&lt;b&gt;Любодар (&lt;strike&gt;Майское&lt;/strike&gt;)&lt;/b&gt;&lt;br&gt;&lt;br /&gt;&lt;a href=&quot;http://lubodar.ru&quot;&gt;http://lubodar.ru&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Владимирская&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;весна 2009&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Анастасиевское (обычное?)&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr valign=&quot;TOP&quot;&gt;
		&lt;td width=&quot;23%&quot; zheight=&quot;116&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;&lt;b&gt;Любинка&lt;/b&gt;&lt;br&gt;&lt;br /&gt;&lt;a href=&quot;http://lubinka.ru&quot;&gt;http://lubinka.ru&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Московская&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;июнь 2009&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;&amp;quot;Научное&amp;quot;&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr valign=&quot;TOP&quot;&gt;
		&lt;td width=&quot;23%&quot; zheight=&quot;116&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;&lt;b&gt;СРП Благодать&lt;/b&gt;&lt;br&gt;&lt;br /&gt;&lt;a href=&quot;http://www.eco-blagodat.ru&quot;&gt;http://www.eco-blagodat.ru&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Ярославское напр., за&lt;br /&gt;			Переславль-Залесским (Ярославская&lt;br /&gt;			обл.?)&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Август 2009,&lt;br /&gt;Ноябрь 2010&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;“слабо связанное”/&quot;либеральное&quot; анастасиевское&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr valign=&quot;TOP&quot;&gt;
		&lt;td width=&quot;23%&quot; hzeight=&quot;112&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;&lt;b&gt;Поселения Казинка - Никольское&lt;br /&gt;			- Сергиевское&lt;/b&gt;&lt;br&gt;&lt;br /&gt;&lt;a href=&quot;http://kazinka-rp.ru&quot;&gt;http://kazinka-rp.ru&lt;/a&gt; &lt;br /&gt;&lt;br&gt;&lt;strike&gt;kazinka.mson.ru&lt;/strike&gt;&lt;br&gt;&lt;br /&gt;&lt;a href=&quot;http://www.nikolskoe-rp.narod.ru&quot;&gt;http://www.nikolskoe-rp.narod.ru&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Тульская область&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;осень 2009&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Поселение &amp;quot;без правил&amp;quot;,&lt;br /&gt;			но требуют немедленного переселения&lt;br /&gt;			на место и тяготеют ЗОЖ, к вегетарианству.&lt;br /&gt;			Приветствуются семьи с детьми.&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr valign=&quot;TOP&quot;&gt;
		&lt;td width=&quot;23%&quot; zheight=&quot;62&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;&lt;b&gt;Кемпхил &amp;quot;Светлана&amp;quot;&lt;/b&gt;&lt;br&gt;&lt;br /&gt;&lt;a href=&quot;http://www.camphillsvetlana.org&quot;&gt;http://www.camphillsvetlana.org&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Ленинградская область&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;начало декабря 2009&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Единственный в России кэмпхилл,&lt;br /&gt;			где живут неполноценные взрослые.&lt;br /&gt;			Есть ферма.&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr valign=&quot;TOP&quot;&gt;
		&lt;td width=&quot;23%&quot; zheight=&quot;59&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;&lt;b&gt;Рыжково&lt;/b&gt;&lt;br&gt;&lt;br /&gt;&lt;a href=&quot;http://www.ryzhkovo.com&quot;&gt;http://www.ryzhkovo.com&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Ленинградская область&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;6 декабря 2009&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Место для проведения семинаров&lt;br /&gt;			и подобных мероприятий для питерцев&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr valign=&quot;TOP&quot;&gt;
		&lt;td width=&quot;23%&quot; zheight=&quot;62&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;&lt;b&gt;АП Аннушка&lt;/b&gt;&lt;br&gt;&lt;br /&gt;&lt;span class=&apos;ljruser&apos; style=&apos;white-space: normal;&apos;&gt;&lt;a href=&apos;http://www.livejournal.com/userinfo.bml?user=yakudza-spb&apos;&gt;&lt;img src=&apos;http://lj.rossia.org/img/userinfo-lj.gif&apos; alt=&apos;[info]&apos; style=&apos;vertical-align: bottom; border: 0;&apos; /&gt;&lt;/a&gt;&lt;a href=&apos;http://www.livejournal.com/users/yakudza-spb/&apos;&gt;&lt;b&gt;yakudza-spb@lj&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Псковская область&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;январь 2010&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot;&gt;&lt;br /&gt;			&lt;p&gt;Просто уезд в деревню, добрососедство&lt;br&gt;&lt;br /&gt;                        (не связанные взаимными обязательствами дворы)&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr valign=&quot;TOP&quot;&gt;
		&lt;td width=&quot;23%&quot; zght=&quot;71&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;“&lt;b&gt;Теремки” и “Гармония”&lt;/b&gt;&lt;br&gt;&lt;br /&gt;&lt;a href=&quot;http://garmonia.nm.ru&quot;&gt;http://garmonia.nm.ru&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Рязанская область&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Апрель 2010&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Либеральное анастасиевское &quot;коттеджного типа&quot;&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr valign=&quot;TOP&quot;&gt;
		&lt;td width=&quot;23%&quot; zght=&quot;71&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;&lt;b&gt;Ковчег&lt;/b&gt;&lt;br&gt;&lt;br /&gt;&lt;a href=&quot;http://www.eco-kovcheg.ru&quot;&gt;http://www.eco-kovcheg.ru&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Калужская область&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;29 мая 2010&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Большое анастасиевское&lt;br /&gt;			поселение с глубокой интеграцией&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr valign=&quot;TOP&quot;&gt;
		&lt;td width=&quot;23%&quot; zght=&quot;52&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;&lt;b&gt;Остров Обырок&lt;/b&gt;&lt;br&gt;&lt;br /&gt;&lt;span class=&apos;ljruser&apos; style=&apos;white-space: normal;&apos;&gt;&lt;a href=&apos;http://www.livejournal.com/userinfo.bml?user=obyrok&apos;&gt;&lt;img src=&apos;http://lj.rossia.org/img/userinfo-lj.gif&apos; alt=&apos;[info]&apos; style=&apos;vertical-align: bottom; border: 0;&apos; /&gt;&lt;/a&gt;&lt;a href=&apos;http://www.livejournal.com/users/obyrok/&apos;&gt;&lt;b&gt;obyrok@lj&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Украина, север&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Май-июнь 2010&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Творческое поселение&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr valign=&quot;TOP&quot;&gt;
		&lt;td width=&quot;23%&quot; zght=&quot;48&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;&lt;b&gt;Ромашки&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Украина, около 150 км южнее Киева&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Июнь 2010, &lt;br&gt;май 2012&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Примитивизм, близость к природе,&lt;br /&gt;			хиповатость. Церковь Последнего Завета (Виссарион), Кришнаиты.&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr valign=&quot;TOP&quot;&gt;
		&lt;td width=&quot;23%&quot; zght=&quot;56&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;&lt;b&gt;Росы (?)&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Украина, около 150 км южнее Киева&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Июнь 2010&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Либеральное анастасиевское&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr valign=&quot;TOP&quot;&gt;
		&lt;td width=&quot;23%&quot; zght=&quot;54&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;&lt;b&gt;Нево-Эковиль&lt;/b&gt;&lt;br&gt;&lt;br /&gt;&lt;a href=&quot;http://our-common-home.narod.ru&quot;&gt;http://our-common-home.narod.ru&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Карелия, не далеко от Сортовалы&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Июнь 2010&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Содружество не-родовых поместий&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr valign=&quot;TOP&quot;&gt;
		&lt;td width=&quot;23%&quot; zght=&quot;37&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;&lt;b&gt;Ясное&lt;/b&gt;&lt;br&gt;&lt;br /&gt;&lt;a href=&quot;http://vkontakte.ru/club2577520&quot;&gt;http://vkontakte.ru/club2577520&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Ленинградская область, запад&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Июнь 2010&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Анастасиевское (обычное?)&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr valign=&quot;TOP&quot;&gt;
		&lt;td width=&quot;23%&quot; zght=&quot;52&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;&lt;b&gt;Лопатино / Прямухино&lt;/b&gt;&lt;br&gt;&lt;br /&gt;&lt;a href=&quot;http://community.livejournal.com/poselenie_eco/2806.html&quot;&gt;http://community.livejournal.com/posele&lt;wbr /&gt;nie_eco/2806.html&lt;/a&gt; &lt;br&gt;&lt;br /&gt;&lt;a href=&quot;http://pryamukhino.wordpress.com&quot;&gt;http://pryamukhino.wordpress.com&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Тверская область&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Июнь 2010&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;на базе анархо-примитивистов&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr valign=&quot;TOP&quot;&gt;
		&lt;td width=&quot;23%&quot; zght=&quot;64&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;&lt;b&gt;&lt;strike&gt;Никольское&lt;/strike&gt; Градислав&lt;/b&gt;&lt;br /&gt;&lt;a href=&quot;http://gradislav.ru/&quot;&gt;http://gradislav.ru&lt;/a&gt;&lt;br /&gt;&lt;strike&gt;&lt;a href=&quot;http://www.nikolskoe.nnov.ru&quot;&gt;http://www.nikolskoe.nnov.ru&lt;/a&gt;&lt;/strike&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Нижегородская область&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Июнь 2010&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Анастасиевское (обычное?)&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr valign=&quot;TOP&quot;&gt;
		&lt;td width=&quot;23%&quot; zght=&quot;64&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;&lt;b&gt;Калиновец&lt;/b&gt;&lt;br /&gt;&lt;a href=&quot;http://kalinovec.ru&quot;&gt;http://kalinovec.ru&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Нижегородская область,&lt;br /&gt;			Воротынский р-н&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Июль 2010&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Анастасиевское (обычное?)&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr valign=&quot;TOP&quot;&gt;
		&lt;td width=&quot;23%&quot; zght=&quot;64&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;&lt;b&gt;Антоновские Сады&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Татарстан&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Август 2010&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Оригинальное синкретическое,&lt;br /&gt;			основной упор на создание тесных&lt;br /&gt;			взаимоотношений&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr valign=&quot;TOP&quot;&gt;
		&lt;td width=&quot;23%&quot; zght=&quot;64&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;&lt;b&gt;Тиберкуль&lt;/b&gt;&lt;br /&gt;&lt;a href=&quot;http://vissarion.ru&quot;&gt;http://vissarion.ru&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;юг Красноярского края&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Август 2010&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Глобальная община (“единая&lt;br /&gt;			семья”) + помощники&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr valign=&quot;TOP&quot;&gt;
		&lt;td width=&quot;23%&quot; zght=&quot;52&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;&lt;b&gt;Родники&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Курганская область, Юргамышский&lt;br /&gt;			р-н&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Сентябрь 2010&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Анастасиевское (обычное?)&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td width=&quot;23%&quot; zght=&quot;17&quot;&gt;&lt;br /&gt;			&lt;p&gt;&lt;b&gt;Большой Камень&lt;/b&gt;&lt;br&gt;&lt;br /&gt;&lt;a href=&quot;http://ecobs.ru&quot;&gt;http://ecobs.ru&lt;/a&gt;&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p&gt;Вологодская обл., Сокольский р-н&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p&gt;декабрь 2010 &lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot;&gt;&lt;br /&gt;			&lt;p&gt;Семейный &quot;экотуристический&quot; пансионат с этнографическим уклоном&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td width=&quot;23%&quot; zght=&quot;17&quot;&gt;&lt;br /&gt;			&lt;p&gt;&lt;b&gt;Коммуна на Медведице&lt;/b&gt;&lt;br&gt;&lt;br /&gt;&lt;a href=&quot;http://vkontakte.ru/club18162755&quot;&gt;http://vkontakte.ru/club18162755&lt;/a&gt;&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p&gt;Курская область (недалеко от Курска, рядом трасса М-2).&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p&gt;7-8 мая 2011&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot;&gt;&lt;br /&gt;			&lt;p&gt;Молодёжно-неформальная тусовка из Курска на базе умирающего СНТ.&lt;br&gt;&quot;дачное&quot; &lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td width=&quot;23%&quot; zght=&quot;17&quot;&gt;&lt;br /&gt;			&lt;p&gt;&lt;b&gt;Гришино&lt;/b&gt;&lt;br&gt;&lt;br /&gt;&lt;a href=&quot;http://www.grishino.ecology.net.ru&quot;&gt;http://www.grishino.ecology.net.ru&lt;/a&gt;&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p&gt;Ленинградская область, Подпорожский район.&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p&gt;15-17 июля 2011&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot;&gt;&lt;br /&gt;			&lt;p&gt;Одно из первых российских &lt;b&gt;&lt;i&gt;экопоселений&lt;/i&gt;&lt;/b&gt; (доанастасиевской эпохи). &lt;br /&gt;Активно привлекает иностранцев.&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr valign=&quot;TOP&quot;&gt;
		&lt;td width=&quot;23%&quot; zght=&quot;17&quot;&gt;&lt;br /&gt;			&lt;p&gt;&lt;b&gt;Сквошино&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.facebook.com/Skvoshino&quot;&gt;facebook.com/Skvoshino&lt;/a&gt;&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p&gt;Псковская область, запад&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p&gt;30 марта - 1 апреля&lt;br /&gt;2012&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot;&gt;&lt;br /&gt;			&lt;p&gt;Молодёжное, творческое, синкретическое;&lt;br /&gt;анархические принципы (самоуправление). Немного хиповатое. &lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr valign=&quot;TOP&quot;&gt;
		&lt;td width=&quot;23%&quot; zght=&quot;17&quot;&gt;&lt;br /&gt;			&lt;p&gt;&lt;b&gt;Ягодное/Ягодино&lt;/b&gt;&lt;br&gt;&lt;br /&gt;&lt;small&gt;(площадка - поле, нак котором планируется строить поселение)&lt;/small&gt;&lt;br /&gt;&lt;br&gt;&lt;a href=&quot;http://yagodino.narod2.ru/&quot;&gt;http://yagodino.narod2.ru&lt;/a&gt;&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p&gt;Владимирская область,&lt;br&gt;юго-запад&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p&gt;29 апреля&lt;br&gt;2012&lt;br&gt;&lt;br /&gt;&lt;small&gt;(было собрание на поле)&lt;/small&gt;&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot;&gt;&lt;br /&gt;			&lt;p&gt;Анастасиевского типа, либеральное&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr valign=&quot;TOP&quot;&gt;
		&lt;td width=&quot;23%&quot; zght=&quot;17&quot;&gt;&lt;br /&gt;			&lt;p&gt;&lt;b&gt;Юшки&lt;/b&gt;&lt;br&gt;&lt;br /&gt;&lt;small&gt;(площадка - поле, нак котором планируется строить экоцентр и поселение)&lt;/small&gt;&lt;br /&gt;&lt;br&gt;&lt;a href=&quot;http://hatabobriv.org.ua/kmb.html&quot;&gt;http://hatabobriv.org.ua/kmb.html&lt;/a&gt;&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p&gt;Киевская область, ок. 100 км на юг от Киева&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p&gt;19 мая 2012&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot;&gt;&lt;br /&gt;			&lt;p&gt;околоанастасиевского пригородного типа&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr valign=&quot;TOP&quot;&gt;
		&lt;td width=&quot;23%&quot; zght=&quot;17&quot;&gt;&lt;br /&gt;			&lt;p&gt;&lt;b&gt;Барановка&lt;/b&gt;&lt;br&gt;&lt;a href=&quot;http://baranivka.org&quot;&gt;Baranivka.Org&lt;/a&gt;&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p&gt;Украина,&lt;br&gt;Полтавская обл.&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p&gt;16-21 сентября 2012&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot;&gt;&lt;br /&gt;			&lt;p&gt;&quot;Молодёжная дача&quot;&lt;br&gt;&lt;br /&gt;NB Им помогает организация &lt;a href=&quot;http://www.iofc.org&quot;&gt;IofC&lt;/a&gt;&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr valign=&quot;TOP&quot;&gt;
		&lt;td width=&quot;23%&quot; zght=&quot;17&quot;&gt;&lt;br /&gt;			&lt;p&gt;Этнокультурный центр народных ремёсел «ТЕРЕМ»&lt;br&gt;&lt;br /&gt;&lt;a href=&quot;https://vk.com/center_terem&quot;&gt;https://vk.com/center_terem&lt;/a&gt;&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p&gt;Смоленская область, под Вязьмой			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p&gt;31 мая -&lt;br&gt;1 июня 2014&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot;&gt;&lt;br /&gt;			&lt;p&gt;Экопоселение &quot;выросшее&quot; из ПРП Доброселье, образовательный центр&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr valign=&quot;TOP&quot;&gt;
		&lt;td width=&quot;23%&quot; zght=&quot;17&quot;&gt;&lt;br /&gt;			&lt;p&gt;&lt;b&gt;Økosamfundet Dyssekilde&lt;/b&gt;&lt;br&gt;&lt;br /&gt;			&lt;/p&gt;&lt;a href=&quot;http://www.dyssekilde.dk/uk&quot;&gt;http://www.dyssekilde.dk&lt;/a&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p&gt;Дания,&lt;br&gt;3 часа на пригородных поездах от Копенгагена, направление на север.&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p&gt;20 сентября 2014&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot;&gt;&lt;br /&gt;			&lt;p&gt;Поселение - кохаузинг. Принятие решений на собрании прямым большинством.&lt;br&gt;Практкуют йогу, есть буддисты.&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr valign=&quot;TOP&quot;&gt;
		&lt;td width=&quot;23%&quot; zght=&quot;17&quot;&gt;&lt;br /&gt;			&lt;p&gt;&lt;br&gt;&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p&gt;&lt;br&gt;&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p&gt;&lt;br&gt;&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot;&gt;&lt;br /&gt;			&lt;p&gt;&lt;br&gt;&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td colspan=&quot;4&quot; width=&quot;100%&quot; zght=&quot;20&quot;&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;	
	&lt;tr&gt;
		&lt;td colspan=&quot;4&quot; width=&quot;100%&quot; zght=&quot;20&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;&lt;u&gt;&lt;b&gt;Особые места&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr valign=&quot;TOP&quot;&gt;
		&lt;td width=&quot;23%&quot; zght=&quot;52&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;&lt;b&gt;Общежитие движения ФАКЭЛ-ПАРТОС&lt;/b&gt;&lt;br&gt;&lt;br /&gt;&lt;a href=&quot;http://fakel-portos.ru&quot;&gt;http://fakel-portos.ru&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Раменское, МО&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Осень 2008&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Пифагорейская радикальная&lt;br /&gt;			организация&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr valign=&quot;TOP&quot;&gt;
		&lt;td width=&quot;23%&quot; zght=&quot;50&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;&lt;b&gt;Дом Друйзей на Природе&lt;/b&gt;&lt;br /&gt;&lt;br&gt;&lt;a href=&quot;http://common-house.backtothelander.info&quot;&gt;http://common-house.backtothelander.info&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Владимирская область&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;2008-...&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;экспериментальная площадка&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr valign=&quot;TOP&quot;&gt;
		&lt;td width=&quot;23%&quot; zght=&quot;50&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;&lt;a href=&quot;http://rassvet-altruism.ru/&quot;&gt;Анархо-альтруистическая коммуна Рассвет&lt;/a&gt;&lt;br /&gt;&lt;br&gt;&lt;a href=&quot;http://rassvet-altruism.ru&quot;&gt;http://rassvet-altruism.ru&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;г. Воронеж&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;7 октября 2009,&lt;br /&gt;январь 2011&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;площадка, &lt;i&gt;флэт&lt;/i&gt;&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr valign=&quot;TOP&quot;&gt;
		&lt;td width=&quot;23%&quot; zght=&quot;36&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;&lt;b&gt;ЧМО Поваровка&lt;/b&gt;&lt;br /&gt;&lt;br&gt;&lt;a href=&quot;http://lj.rossia.org/community/xenodochia/1405.html&quot;&gt;http://lj.rossia.org/community/xenodochi&lt;wbr /&gt;a/1405.html&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Московская обл., Поваровка (ленинградское напр.)&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;весна 2010&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Частное Молодёжное Общежитие&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr valign=&quot;TOP&quot;&gt;
		&lt;td width=&quot;23%&quot; zght=&quot;36&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;&lt;b&gt;Святогорово&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Московская обл., Дмитровский&lt;br /&gt;			р-н&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;21 мая 2010&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;частное поместье-дача&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr valign=&quot;TOP&quot;&gt;
		&lt;td width=&quot;23%&quot; zght=&quot;36&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;&lt;b&gt;Земляничные поляны&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Ленинградская область&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Июнь 2010&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;частное поместье&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr valign=&quot;TOP&quot;&gt;
		&lt;td width=&quot;23%&quot; zght=&quot;36&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;&lt;b&gt;Особое место в Петяярви&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Ленинградская область&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Июнь 2010&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;турстоянка напрости базы ЛИТМО&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr valign=&quot;TOP&quot;&gt;
		&lt;td width=&quot;23%&quot; zght=&quot;57&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;&lt;b&gt;Зелёный Домик&lt;/b&gt;&lt;br /&gt;&lt;a href=&quot;http://zeldomik.ru&quot;&gt;http://zeldomik.ru&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;г.Томск&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Август 2010&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;бывший хипятник, арт-центр,&lt;br /&gt;			место проведения квартирников&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr valign=&quot;TOP&quot;&gt;
		&lt;td width=&quot;23%&quot; zght=&quot;57&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;&lt;b&gt;Эколофт&lt;/b&gt;&lt;br /&gt;&lt;span class=&apos;ljruser&apos; style=&apos;white-space: normal;&apos;&gt;&lt;a href=&apos;http://www.livejournal.com/userinfo.bml?user=ecoloft&apos;&gt;&lt;img src=&apos;http://lj.rossia.org/img/userinfo-lj.gif&apos; alt=&apos;[info]&apos; style=&apos;vertical-align: bottom; border: 0;&apos; /&gt;&lt;/a&gt;&lt;a href=&apos;http://www.livejournal.com/users/ecoloft/&apos;&gt;&lt;b&gt;ecoloft@lj&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;г.Москва, ул.Пятницкая&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;осень 2010&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;место проведения квартирников, экологических акций&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr valign=&quot;TOP&quot;&gt;
		&lt;td width=&quot;23%&quot; zght=&quot;57&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;&lt;b&gt;&quot;Журавлиная Родина&quot;&lt;/b&gt; (заказник, сообщество)&lt;br /&gt;&lt;a href=&quot;http://www.craneland.ru&quot;&gt;http://www.craneland.ru&lt;/a&gt; &lt;br /&gt;&lt;a href=&quot;http://oxycoccus.narod.ru&quot;&gt;http://oxycoccus.narod.ru&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Московская обл.,&lt;br /&gt;Талдомский район, &lt;br /&gt;д.Леоново&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;23-24 апреля 2011&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Экологи, биологи. Активно борятся с природными пожарами.&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;	&lt;tr valign=&quot;TOP&quot;&gt;
		&lt;td width=&quot;23%&quot; zght=&quot;57&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;&lt;b&gt;Арбузхона&lt;/b&gt; (жилищное сообщество на даче)&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;Московская обл.,&lt;br /&gt;Сходня, ул.Горная&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;14 мая 2011&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot;&gt;&lt;br /&gt;			&lt;p align=&quot;LEFT&quot;&gt;&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td width=&quot;23%&quot; zght=&quot;17&quot;&gt;&lt;br /&gt;			&lt;p&gt;&lt;b&gt;ТС МЕСТО&lt;/b&gt;&lt;br&gt;&lt;br /&gt;&lt;a href=&quot;http://www.couchsurfing.org/people/36.6&quot;&gt;http://www.couchsurfing.org/people/3&lt;wbr /&gt;6.6&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://vkontakte.ru/mestomestnoe&quot;&gt;http://vkontakte.ru/mestomestnoe&lt;/a&gt;&lt;br /&gt;&lt;br&gt;&lt;span class=&apos;ljruser&apos; style=&apos;white-space: normal;&apos;&gt;&lt;a href=&apos;http://www.livejournal.com/userinfo.bml?user=mestomestnoe&apos;&gt;&lt;img src=&apos;http://lj.rossia.org/img/userinfo-lj.gif&apos; alt=&apos;[info]&apos; style=&apos;vertical-align: bottom; border: 0;&apos; /&gt;&lt;/a&gt;&lt;a href=&apos;http://www.livejournal.com/users/mestomestnoe/&apos;&gt;&lt;b&gt;mestomestnoe@lj&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p&gt;СПб, р-н В.О.&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p&gt;17 июля 2011&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot;&gt;&lt;br /&gt;			&lt;p&gt;Мастерские и общежитие&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;	
	&lt;tr&gt;
		&lt;td width=&quot;23%&quot; zght=&quot;17&quot;&gt;&lt;br /&gt;			&lt;p&gt;&lt;b&gt;&quot;Школа [Эко]Жизни&quot;&lt;/b&gt;&lt;br&gt;&lt;br /&gt;&lt;a href=&quot;http://vkontakte.ru/club27879973&quot;&gt;vkontakte.ru/club27879973&lt;/a&gt; (содержимое странички не полносью соответствует реальности)&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p&gt;Переславль-залесский р-н ярославской области&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p&gt;8-10 октября 2011&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot; align=&quot;LEFT&quot;&gt;&lt;br /&gt;			&lt;p&gt;Большой дом с мастерскими, дополнительными постройками, 0.8 га земли.&lt;br /&gt;Небольшая группа молодых энтузиастов, желающих миру лучшего. :-)&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td width=&quot;23%&quot; zght=&quot;17&quot;&gt;&lt;br /&gt;			&lt;p&gt;Экспериментальный &lt;b&gt;&quot;Дружный Дом&quot;&lt;/b&gt; в Лобне&lt;br /&gt;&lt;br&gt;&lt;a href=&quot;http://vkontakte.ru/club31556393&quot;&gt;http://vkontakte.ru/club31556393&lt;/a&gt;&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p&gt;г.Лобня (ближнее Подмосковье)&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p&gt;25 октября 2011&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot; align=&quot;LEFT&quot;&gt;&lt;br /&gt;			см. &lt;a href=&quot;http://lj.rossia.org/community/ru_cohousing/5114.html&quot;&gt;объявление&lt;/a&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td width=&quot;23%&quot; zght=&quot;17&quot;&gt;&lt;br /&gt;			&lt;p&gt;&quot;Волшебный домик чудесной любви&quot;&lt;br&gt; (Мал.Вязёмы)&lt;br /&gt;&lt;br&gt;&lt;a href=&quot;http://vkontakte.ru/homelove&quot;&gt;http://vkontakte.ru/homelove&lt;/a&gt;&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p&gt;ближнее Подмосковье, беларусское напр.&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p&gt;26 ноября 2011&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot; align=&quot;LEFT&quot;&gt;Весьма положтельная атмосфера!&lt;br /&gt;&lt;br /&gt;Молодёжь. Аюрведическая тематика, вегетарианство.&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td width=&quot;23%&quot; zght=&quot;17&quot;&gt;&lt;br /&gt;			&lt;p&gt;Образовательный центр &quot;Экосистема&quot;&lt;br&gt;&lt;br /&gt;&lt;a href=&quot;http://ecosystema.ru&quot;&gt;http://ecosystema.ru&lt;/a&gt;&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p&gt;ближнее Подмосковье, Ярославское напр.&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p&gt;17-18 декабря 2011&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot; align=&quot;LEFT&quot;&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td width=&quot;23%&quot; zght=&quot;17&quot;&gt;&lt;br /&gt;			&lt;p&gt;Киевский Экоцентр&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p&gt;Киев, м.Выдубичи&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p&gt;12,20 мая 2012&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot; align=&quot;LEFT&quot;&gt;Тематическая площадка в Киеве&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td width=&quot;23%&quot; zght=&quot;17&quot;&gt;&lt;br /&gt;			&lt;p&gt;&quot;Монастырь&quot; Сказкотерры&lt;br /&gt;&lt;span class=&apos;ljruser&apos; style=&apos;white-space: normal;&apos;&gt;&lt;a href=&apos;http://www.livejournal.com/userinfo.bml?user=skazkoterra&apos;&gt;&lt;img src=&apos;http://lj.rossia.org/img/userinfo-lj.gif&apos; alt=&apos;[info]&apos; style=&apos;vertical-align: bottom; border: 0;&apos; /&gt;&lt;/a&gt;&lt;a href=&apos;http://www.livejournal.com/users/skazkoterra/&apos;&gt;&lt;b&gt;skazkoterra@lj&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p&gt;Крым, Бахчисарайский р-н&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p&gt;14-18 мая 2012&lt;br /&gt;август 2013&lt;br /&gt;			&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot; align=&quot;LEFT&quot;&gt;Частная площадка, место проведения семинаров и неформальных встреч (психология, эзотерика тип)&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td width=&quot;23%&quot; zght=&quot;17&quot;&gt;&lt;br /&gt;			&lt;p&gt;Поселение Типицца&lt;br /&gt;&lt;br&gt;&lt;a href=&quot;http://vk.com/tipizza&quot;&gt;http://vk.com/tipizza&lt;/p&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p&gt;рязанская обл., вблизи г. Спасс-Клепики&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p&gt;26-27 июня 2012&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot; align=&quot;LEFT&quot;&gt;Частная площадка, лидер и хозяин &lt;span class=&apos;ljruser&apos; style=&apos;white-space: normal;&apos;&gt;&lt;a href=&apos;http://www.livejournal.com/userinfo.bml?user=chaika-stal&apos;&gt;&lt;img src=&apos;http://lj.rossia.org/img/userinfo-lj.gif&apos; alt=&apos;[info]&apos; style=&apos;vertical-align: bottom; border: 0;&apos; /&gt;&lt;/a&gt;&lt;a href=&apos;http://www.livejournal.com/users/chaika-stal/&apos;&gt;&lt;b&gt;chaika-stal@lj&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&quot;микс буддизма, индуизма, индианства, нью-эйдж, анархизма и примитивизма и ещё чего-то западноевропейского&quot;&lt;/i&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td width=&quot;23%&quot; zght=&quot;17&quot;&gt;&lt;br /&gt;			&lt;p&gt;Пространство &quot;Eco-Camp&quot;&lt;br /&gt;&lt;a href=&quot;http://healthspirit.ru/&quot;&gt;healthspirit.ru&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p&gt;Крым, р-н Бахчисарая, дорога на Танковое-Счастивое&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p&gt;август 2013&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot; align=&quot;LEFT&quot;&gt;Коммерческий лагерь в предгорьях Крыма. Йога, вегетарианское питание, культурные события.&lt;br /&gt;&lt;br /&gt;Есть WiFi и возможность удалённой работы (электричество итд).&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td width=&quot;23%&quot; zght=&quot;17&quot;&gt;&lt;br /&gt;			&lt;p&gt;&quot;Приходите в гости&quot; Коммуна&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://vk.com/wearecommune&quot;&gt;http://vk.com/wearecommune&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p&gt;Рязань&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p&gt;6 октября 2013&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot; align=&quot;LEFT&quot;&gt;Молодёжный флэт, немного хипповатости, но культурно.&lt;br /&gt;Темы: мызыка, культурная жизнь, гештальт.&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td width=&quot;23%&quot; zght=&quot;17&quot;&gt;&lt;br /&gt;			&lt;p&gt;ЧМО Салтыковка (&lt;i&gt;aka &quot;Поликуб&quot;&lt;/i&gt;)&lt;br /&gt;&lt;br&gt;&lt;a href=&quot;https://vk.com/saltukovka&quot;&gt;https://vk.com/saltukovka&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p&gt;МО, Рядом с платф.Салтыковская, горьковское направление электричек&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p&gt;конец 2013 года&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot; align=&quot;LEFT&quot;&gt;Частное Молодёжное Общежитие, &quot;наследник&quot; ЧМО Поавровка&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td width=&quot;23%&quot; zght=&quot;17&quot;&gt;&lt;br /&gt;			&lt;p&gt;Християния&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p&gt;Копенгаген, Дания&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p&gt;10 сентября 2014&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot; align=&quot;LEFT&quot;&gt;Очень известное старое место-сквот, &quot;свободный город&quot;.&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td width=&quot;23%&quot; zght=&quot;17&quot;&gt;&lt;br /&gt;			&lt;p&gt;Частные коммунальные дома молодых людей, с його-направленностью&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p&gt;Московская область, ярославское направление, платф. Зеленоградская и др.&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p&gt;4-5 октября 2014&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot; align=&quot;LEFT&quot;&gt;Арендуемые вскладчину коттеджи.&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td width=&quot;23%&quot; zght=&quot;17&quot;&gt;&lt;br /&gt;			&lt;p&gt;&lt;b&gt;Культурно-Оздоровительный Центр &quot;Восхождение&quot;&lt;/b&gt;.&lt;br /&gt;			&lt;br /&gt;&lt;a href=&quot;http://vk.com/centr_voshogdenie&quot;&gt;http://vk.com/centr_voshogdenie&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p&gt;пос. Возрождение, р-н Геленджика, Краснодарская область.&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p&gt;13-16 августа 2015&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot; align=&quot;LEFT&quot;&gt;Площадка на природе. Большинство живут в палатках. Тема ЗОЖ.&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td width=&quot;23%&quot; zght=&quot;17&quot;&gt;&lt;br /&gt;			&lt;p&gt;&lt;b&gt;Дом Творчества СуМеру&lt;/b&gt; (бывш. &quot;Дом друзей в Краснодаре&quot;)&lt;/br&gt;&lt;br /&gt;			(На тот момент уже назывался &quot;Дом творчества&quot;)&lt;/br&gt;&lt;br /&gt;			&lt;a href=&quot;http://vk.com/dom_druzei&quot;&gt;http://vk.com/dom_druzei&lt;/a&gt; (ссылка уже не работает)&lt;br /&gt;			&lt;a href=&quot;http://vk.com/su_meru&quot;&gt;http://vk.com/su_meru&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p&gt;Краснодар, северо-восток, не далеко от федеральной тарссы.&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p&gt;26 августа 2015&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot; align=&quot;LEFT&quot;&gt;Бывший &quot;вписочный дом&quot;.&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td width=&quot;23%&quot; zght=&quot;17&quot;&gt;&lt;br /&gt;			&lt;p&gt;&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;24%&quot;&gt;&lt;br /&gt;			&lt;p&gt;&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;18%&quot;&gt;&lt;br /&gt;			&lt;p&gt;&lt;/p&gt;&lt;br /&gt;		&lt;/td&gt;
		&lt;td width=&quot;35%&quot; align=&quot;LEFT&quot;&gt;&lt;br /&gt;		&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;См.также: &lt;br /&gt;&lt;li&gt;Моя оценка &quot;либиральности к повседневным жизненным практикам&quot; (октябрь 2011):&lt;br&gt;&lt;br /&gt;&lt;a href=&quot;http://lj.rossia.org/community/ru_ic/12944.html&quot;&gt;http://lj.rossia.org/community/ru_ic/129&lt;wbr /&gt;44.html&lt;/a&gt;.&lt;br /&gt;&lt;li&gt;&lt;a href=&quot;http://www.eco-krug.ru/spisok-poseleniy&quot;&gt;Список жилых поселений&lt;/a&gt; (где зимуют), (ведётся в ПРП Ковчеге).&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align:left&quot;&gt;&lt;font size=&quot;-2&quot;&gt;&lt;a href=&quot;http://lj.rossia.org/users/shestero/142914.html&quot;&gt;&lt;img src=&quot;http://lj.rossia.org/numreplies/shestero/142914&quot; border=0 width=20 height=14  alt=&quot;number of comments&quot; style=&quot;border:0px;&quot; /&gt; &lt;strong&gt;Comments&lt;/strong&gt;&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;</description>
  <comments>http://lj.rossia.org/users/shestero/142914.html</comments>
  <category>alternative villages</category>
  <category>communities</category>
  <category>list</category>
  <category>report</category>
</item>
<item>
  <guid isPermaLink='true'>http://lj.rossia.org/users/shestero/142631.html</guid>
  <pubDate>Wed, 08 Oct 2014 23:31:00 GMT</pubDate>
  <title>Преобразование HTML в XHTML на C и C++</title>
  <link>http://lj.rossia.org/users/shestero/142631.html</link>
  <description>Задача преобразования HTML-форматированного текста в XHTML появилась в связи с тем, что нужно было вставлять в XML блоки форматированного текста. (Про чтение таких блоков при SAX-разборе я написал статью: &lt;a href=&quot;http://lj.rossia.org/users/shestero/141287.html&quot;&gt;http://lj.rossia.org/users/shestero/141&lt;wbr /&gt;287.html&lt;/a&gt; ). Эти вставки писались вручную и часто содержали ошибки форматирования, невидные при просмотре в браузерах, но неприемлимые для строгих парсеров XML. Кроме того в исходных текстах часто были непарные теги, вроде &amp;lt;BR&amp;gt, которые каждый раз приходилось отыскивать и исправлять вручную.&lt;br /&gt;&lt;br /&gt;Для выполнения этой задачи на C++ я успешно приминил бесплатную библиотку &lt;a href=&quot;http://tidy.sourceforge.net&quot;&gt;Tidy&lt;/a&gt;. К сожалению разработка её остановилась в начале 2009, но для моей задачи она сгодилась.&lt;br /&gt;&lt;br /&gt;Я использовал MinGW, компилировал из коммандной строки-консоли Qt 4.8.3 под Windows 7.&lt;br /&gt;Так как исходники уже довольно древние, при компиляции возникают небольшие загвоздки. Вот пошаговая инструкция, как я делал:&lt;br /&gt;1. Использовал последний tarbar-архив из CSV (март 2009).&lt;br /&gt;2. После распаковки надо создать вручную директории &lt;b&gt;obj&lt;/b&gt; (где Makefile) и &lt;b&gt;bin&lt;/b&gt; c &lt;b&gt;lib&lt;/b&gt; (в директории tidy) (сами они не создаются)&lt;br /&gt;3. Я использовал &lt;b&gt;Makefile&lt;/b&gt; для &lt;b&gt;gmake&lt;/b&gt;, но его пришлось изрядно поправить. Также для компиляции в MinGW пришлось поправить директиву выбора блока в файле src/&lt;b&gt;mappedio.c&lt;/b&gt;. Исправленные файлы я выложил в архив tidy-changes.7z [&lt;a href=&quot;http://netdat.ru/files/2014/tidy-changes.7z&quot;&gt;здесь&lt;/a&gt;].&lt;br /&gt;4. Для сборки библиотеки запустите &lt;b&gt;make&lt;/b&gt; из директории &lt;b&gt;build\gmake&lt;/b&gt;. &lt;br /&gt;&lt;br /&gt;Вот код на C++, обеспечивающий конвертацию:&lt;br /&gt;&lt;pre&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;// Convert HTML to XHTML and clean up using libTidy
&lt;/font&gt;&lt;/i&gt;&lt;font color=&quot;#000099&quot;&gt;#include &amp;lt;tidy.h&amp;gt;
#include &amp;lt;buffio.h&amp;gt;
&lt;/font&gt;string CleanHTML&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;const&lt;/font&gt;&lt;font color=&quot;#FF6633&quot;&gt; char&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; *&lt;/font&gt;&lt;/b&gt;html&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)
{&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;
    // Initialize a Tidy document
&lt;/font&gt;&lt;/i&gt;    TidyDoc tidyDoc&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt; tidyCreate&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;();&lt;/font&gt;&lt;/b&gt;
    TidyBuffer tidyOutputBuffer&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; = {&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#999900&quot;&gt;0&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;};&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;

    // Configure Tidy
    // The flags tell Tidy to output XML and disable showing warnings
&lt;/font&gt;&lt;/i&gt;&lt;font color=&quot;#FF6633&quot;&gt;    bool&lt;/font&gt; configSuccess&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt; tidyOptSetBool&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;tidyDoc&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; TidyXmlOut&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; yes&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)
        &amp;amp;&amp;amp;&lt;/font&gt;&lt;/b&gt; tidyOptSetBool&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;tidyDoc&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; TidyQuiet&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; yes&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)
        &amp;amp;&amp;amp;&lt;/font&gt;&lt;/b&gt; tidyOptSetBool&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;tidyDoc&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; TidyNumEntities&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; yes&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)
        &amp;amp;&amp;amp;&lt;/font&gt;&lt;/b&gt; tidyOptSetBool&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;tidyDoc&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; TidyShowWarnings&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; yes&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt; // no
&lt;/font&gt;&lt;/i&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;        ;&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;//&amp;amp;&amp;amp; tidyOptSetValue(tidyDoc,TidyCharEncoding, &quot;utf8&quot;);
&lt;/font&gt;&lt;/i&gt;&lt;font color=&quot;#FF6633&quot;&gt;
    int&lt;/font&gt; tidyResponseCode&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; = -&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#999900&quot;&gt;1&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;

    // Parse input
&lt;/font&gt;&lt;/i&gt;&lt;font color=&quot;#FF0000&quot;&gt;    if&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;configSuccess&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)&lt;/font&gt;&lt;/b&gt;
        tidyResponseCode&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt; tidyParseString&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;tidyDoc&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; html&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;);&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;

    // Process HTML
&lt;/font&gt;&lt;/i&gt;&lt;font color=&quot;#FF0000&quot;&gt;    if&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;tidyResponseCode&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; &amp;gt;=&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#999900&quot;&gt; 0&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)&lt;/font&gt;&lt;/b&gt;
        tidyResponseCode&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt; tidyCleanAndRepair&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;tidyDoc&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;);&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;

    // Output the HTML to our buffer
&lt;/font&gt;&lt;/i&gt;&lt;font color=&quot;#FF0000&quot;&gt;    if&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;tidyResponseCode&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; &amp;gt;=&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#999900&quot;&gt; 0&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)&lt;/font&gt;&lt;/b&gt;
        tidyResponseCode&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt; tidySaveBuffer&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;tidyDoc&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;, &amp;amp;&lt;/font&gt;&lt;/b&gt;tidyOutputBuffer&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;);&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;

    // Any errors from Tidy?
&lt;/font&gt;&lt;/i&gt;&lt;font color=&quot;#FF0000&quot;&gt;    if&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;tidyResponseCode&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; &amp;lt;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#999900&quot;&gt; 0&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt; // Tidy encountered an error while parsing an HTML
&lt;/font&gt;&lt;/i&gt;&lt;font color=&quot;#FF0000&quot;&gt;        throw&lt;/font&gt; tidyResponseCode&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;

    // Grab the result from the buffer and then free Tidy&apos;s memory
&lt;/font&gt;&lt;/i&gt;    std&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;string tidyResult&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; = (&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF6633&quot;&gt;char&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;*)&lt;/font&gt;&lt;/b&gt;tidyOutputBuffer&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;.&lt;/font&gt;&lt;/b&gt;bp&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;
    tidyBufFree&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&amp;amp;&lt;/font&gt;&lt;/b&gt;tidyOutputBuffer&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;);&lt;/font&gt;&lt;/b&gt;
    tidyRelease&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;tidyDoc&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;);&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;

    return&lt;/font&gt; tidyResult&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;
}&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;
// ................

        // Convert HTML to XHTML and clean it
        // see also: https://bugs.webkit.org/show_bug.cgi?id=44876
&lt;/font&gt;&lt;/i&gt;        string xhtml&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;
        try&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;
        {&lt;/font&gt;&lt;/b&gt;
            xhtml&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt; CleanHTML&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt; html&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; );
        }&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;
        catch&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF6633&quot;&gt;int&lt;/font&gt; e&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)
        {&lt;/font&gt;&lt;/b&gt;
            cerr&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; &amp;lt;&amp;lt;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt; &quot;Clean HTML error (from libTidy): &quot;&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; &amp;lt;&amp;lt;&lt;/font&gt;&lt;/b&gt; e&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; &amp;lt;&amp;lt;&lt;/font&gt;&lt;/b&gt; endl&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;
        }&lt;/font&gt;&lt;/b&gt;&lt;/pre&gt;Добавлю, что в моём случае обработка UTF-8 символов (кирилицы) в приложении, запущенном под Windows 7 x64 происходила не правильно (они конвертировались в кодовые &amp;amp;-представления побайтно). Так как мне это не было нужно в тот момент, я не стал разбираться в чём там дело, возможно просто в системных настройках локалей или в каких-то параметрах запуска библиотечных функций или компиляции. Вроде бы Tidy поддерживает UTF-8. Для обработки кириличных HTML-текстов также можно перевести их в однобайтовую кодировку, например в CP-1251.&lt;br /&gt;&lt;br /&gt;Для C++ также существует специальная обёртка Tidy-библиотеки &lt;b&gt;TidyPP&lt;/b&gt;: &lt;a href=&quot;http://code.google.com/p/tidypp&quot;&gt;http://code.google.com/p/tidypp&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align:left&quot;&gt;&lt;font size=&quot;-2&quot;&gt;&lt;a href=&quot;http://lj.rossia.org/users/shestero/142631.html&quot;&gt;&lt;img src=&quot;http://lj.rossia.org/numreplies/shestero/142631&quot; border=0 width=20 height=14  alt=&quot;number of comments&quot; style=&quot;border:0px;&quot; /&gt; &lt;strong&gt;Comments&lt;/strong&gt;&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;</description>
  <comments>http://lj.rossia.org/users/shestero/142631.html</comments>
  <category>c++</category>
  <category>html</category>
  <category>it</category>
  <category>xhtml</category>
  <lj:mood>busy</lj:mood>
</item>
<item>
  <guid isPermaLink='true'>http://lj.rossia.org/users/shestero/142404.html</guid>
  <pubDate>Tue, 07 Oct 2014 12:29:50 GMT</pubDate>
  <title>Чтение простого XML с помощью RapidXML</title>
  <link>http://lj.rossia.org/users/shestero/142404.html</link>
  <description>Я люблю хранить технологическую конфигурацию моих программ и утилит в XML-файле.&lt;br /&gt;Пока я делал приложения с использованием Qt использовал небольшой класс, который читал эту конфигурацию и сохранял её в QStringMap.&lt;br /&gt;&lt;br /&gt;Однако возникла потребность сделать простую утилиту на C++ но без Qt, XML-парсером которой я пользовался.&lt;br /&gt;Типичный формат моего XML таков:&lt;pre&gt;
&lt;span style=&quot;color:#004a43; &quot;&gt;&amp;lt;?&lt;/span&gt;&lt;span style=&quot;color:#800000; font-weight:bold; &quot;&gt;xml&lt;/span&gt;&lt;span style=&quot;color:#004a43; &quot;&gt; &lt;/span&gt;&lt;span style=&quot;color:#074726; &quot;&gt;version&lt;/span&gt;&lt;span style=&quot;color:#808030; &quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#0000e6; &quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#7d0045; &quot;&gt;1.0&lt;/span&gt;&lt;span style=&quot;color:#0000e6; &quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#004a43; &quot;&gt; &lt;/span&gt;&lt;span style=&quot;color:#074726; &quot;&gt;encoding&lt;/span&gt;&lt;span style=&quot;color:#808030; &quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#0000e6; &quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#0000e6; &quot;&gt;utf-8&lt;/span&gt;&lt;span style=&quot;color:#0000e6; &quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#004a43; &quot;&gt;?&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color:#a65700; &quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:#5f5035; &quot;&gt;registry&lt;/span&gt;&lt;span style=&quot;color:#a65700; &quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span style=&quot;color:#a65700; &quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:#5f5035; &quot;&gt;version&lt;/span&gt;&lt;span style=&quot;color:#a65700; &quot;&gt;&amp;gt;&lt;/span&gt;1&lt;span style=&quot;color:#a65700; &quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:#5f5035; &quot;&gt;version&lt;/span&gt;&lt;span style=&quot;color:#a65700; &quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span style=&quot;color:#a65700; &quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:#5f5035; &quot;&gt;section&lt;/span&gt; &lt;span style=&quot;color:#274796; &quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#808030; &quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#0000e6; &quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#0000e6; &quot;&gt;common&lt;/span&gt;&lt;span style=&quot;color:#0000e6; &quot;&gt;&quot;&lt;/span&gt; &lt;span style=&quot;color:#a65700; &quot;&gt;&amp;gt;&lt;/span&gt;
        &lt;span style=&quot;color:#a65700; &quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:#5f5035; &quot;&gt;parameter&lt;/span&gt; &lt;span style=&quot;color:#274796; &quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#808030; &quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#0000e6; &quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#0000e6; &quot;&gt;locale&lt;/span&gt;&lt;span style=&quot;color:#0000e6; &quot;&gt;&quot;&lt;/span&gt; &lt;span style=&quot;color:#a65700; &quot;&gt;&amp;gt;&lt;/span&gt;ru_RU.utf8&lt;span style=&quot;color:#a65700; &quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:#5f5035; &quot;&gt;parameter&lt;/span&gt;&lt;span style=&quot;color:#a65700; &quot;&gt;&amp;gt;&lt;/span&gt;

        &lt;span style=&quot;color:#a65700; &quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:#5f5035; &quot;&gt;parameter&lt;/span&gt; &lt;span style=&quot;color:#274796; &quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#808030; &quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#0000e6; &quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#0000e6; &quot;&gt;parameter1&lt;/span&gt;&lt;span style=&quot;color:#0000e6; &quot;&gt;&quot;&lt;/span&gt; &lt;span style=&quot;color:#a65700; &quot;&gt;&amp;gt;&lt;/span&gt;value1&lt;span style=&quot;color:#a65700; &quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:#5f5035; &quot;&gt;parameter&lt;/span&gt;&lt;span style=&quot;color:#a65700; &quot;&gt;&amp;gt;&lt;/span&gt;
        &lt;span style=&quot;color:#a65700; &quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color:#5f5035; &quot;&gt;parameter&lt;/span&gt; &lt;span style=&quot;color:#274796; &quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color:#808030; &quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color:#0000e6; &quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color:#0000e6; &quot;&gt;parameter2&lt;/span&gt;&lt;span style=&quot;color:#0000e6; &quot;&gt;&quot;&lt;/span&gt; &lt;span style=&quot;color:#a65700; &quot;&gt;&amp;gt;&lt;/span&gt;value2&lt;span style=&quot;color:#a65700; &quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:#5f5035; &quot;&gt;parameter&lt;/span&gt;&lt;span style=&quot;color:#a65700; &quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span style=&quot;color:#a65700; &quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:#5f5035; &quot;&gt;section&lt;/span&gt;&lt;span style=&quot;color:#a65700; &quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color:#a65700; &quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color:#5f5035; &quot;&gt;registry&lt;/span&gt;&lt;span style=&quot;color:#a65700; &quot;&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;Для чтения я без проблем воспользовался бесплатной библиотекой &lt;a href=&quot;http://rapidxml.sourceforge.net&quot;&gt;RapidXML 1.13&lt;/a&gt;. Сейчас она входит в &lt;a href=&quot;http://www.boost.org&quot;&gt;Boost&lt;/a&gt;, но я попробовал также использовать её и отдельно (при сборке с помощью GNU C++/MinGW под Windows). Собственно библиотека эта состоит из трёх шабонных HPP-файлов, которые не требуют компиляции.&lt;br /&gt;&lt;br /&gt;Публикую код, который читает XML и сохраняет конфигурацию в STL-коллекцию:&lt;br /&gt;&lt;pre&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;//#include &amp;lt;rapidxml.hpp&amp;gt;
//using namespace rapidxml;
&lt;/font&gt;&lt;/i&gt;&lt;font color=&quot;#000099&quot;&gt;#include &amp;lt;boost/property_tree/detail/rapidxml.hpp&amp;gt;
&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;using namespace&lt;/font&gt; boost&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;property_tree&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;detail&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;rapidxml&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;

// .................

    // ---
&lt;/font&gt;&lt;/i&gt;    xml_document&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;&amp;lt;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF6633&quot;&gt;char&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;&amp;gt;&lt;/font&gt;&lt;/b&gt; doc&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;

    //cout &amp;lt;&amp;lt; &quot;Parse...&quot; &amp;lt;&amp;lt; endl;
&lt;/font&gt;&lt;/i&gt;&lt;font color=&quot;#FF0000&quot;&gt;
    try&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; {&lt;/font&gt;&lt;/b&gt;
        ifstream file&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt; fname_xml&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;.&lt;/font&gt;&lt;/b&gt;c_str&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;() );&lt;/font&gt;&lt;/b&gt;
        vector&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;&amp;lt;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF6633&quot;&gt;char&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;&amp;gt;&lt;/font&gt;&lt;/b&gt; buffer&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;((&lt;/font&gt;&lt;/b&gt;istreambuf_iterator&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;&amp;lt;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF6633&quot;&gt;char&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;&amp;gt;(&lt;/font&gt;&lt;/b&gt;file&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)),&lt;/font&gt;&lt;/b&gt; istreambuf_iterator&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;&amp;lt;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF6633&quot;&gt;char&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;&amp;gt;());&lt;/font&gt;&lt;/b&gt;
        buffer&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;.&lt;/font&gt;&lt;/b&gt;push_back&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt;&apos;\0&apos;&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;);&lt;/font&gt;&lt;/b&gt;

        doc&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;.&lt;/font&gt;&lt;/b&gt;parse&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;&amp;lt;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#999900&quot;&gt;0&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;&amp;gt;( &amp;amp;&lt;/font&gt;&lt;/b&gt;buffer&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;[&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#999900&quot;&gt;0&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;] );
    }&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;
    catch&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;parse_error e&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;) {&lt;/font&gt;&lt;/b&gt;
        cerr&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; &amp;lt;&amp;lt;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt; &quot;Fail. Parse error &quot;&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; &amp;lt;&amp;lt;&lt;/font&gt;&lt;/b&gt; e&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;.&lt;/font&gt;&lt;/b&gt;what&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;() &amp;lt;&amp;lt;&lt;/font&gt;&lt;/b&gt; endl&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;
        return&lt;/font&gt;&lt;font color=&quot;#999900&quot;&gt; 0&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;
    }&lt;/font&gt;&lt;/b&gt;

    xml_node&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;&amp;lt;&amp;gt; *&lt;/font&gt;&lt;/b&gt;root_node&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt; doc&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;.&lt;/font&gt;&lt;/b&gt;first_node&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;();&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;
    //cout &amp;lt;&amp;lt; &quot;Root found?&quot; &amp;lt;&amp;lt; endl;
&lt;/font&gt;&lt;/i&gt;&lt;font color=&quot;#FF0000&quot;&gt;
    if&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;root_node&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;!=&lt;/font&gt;&lt;/b&gt;NULL&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)
    {&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;
        //cout &amp;lt;&amp;lt; &quot;Root found!&quot; &amp;lt;&amp;lt; root_node-&amp;gt;name() &amp;lt;&amp;lt; &quot;:&quot; &amp;lt;&amp;lt; root_node-&amp;gt;value() &amp;lt;&amp;lt; endl;
&lt;/font&gt;&lt;/i&gt;        xml_node&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;&amp;lt;&amp;gt; *&lt;/font&gt;&lt;/b&gt;node&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt; root_node&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;first_node&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt;&quot;section&quot;&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;);&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;
        //if (node!=NULL) cout &amp;lt;&amp;lt; &quot;section found&quot; &amp;lt;&amp;lt; endl;
&lt;/font&gt;&lt;/i&gt;&lt;font color=&quot;#FF0000&quot;&gt;        if&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;node&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)&lt;/font&gt;&lt;/b&gt; node&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt; node&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;first_node&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt;&quot;parameter&quot;&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;);&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;
        //if (node!=NULL) cout &amp;lt;&amp;lt; &quot;first parameter found&quot; &amp;lt;&amp;lt; endl;
&lt;/font&gt;&lt;/i&gt;&lt;font color=&quot;#FF0000&quot;&gt;        while&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;node&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;!=&lt;/font&gt;&lt;/b&gt;NULL&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)
        {&lt;/font&gt;&lt;/b&gt;
            xml_attribute&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;&amp;lt;&amp;gt;*&lt;/font&gt;&lt;/b&gt; a&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt; node&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;first_attribute&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt;&quot;id&quot;&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;);&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;
            if&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;a&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;!=&lt;/font&gt;&lt;/b&gt;NULL&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)
            {&lt;/font&gt;&lt;/b&gt;
                config&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;[&lt;/font&gt;&lt;/b&gt; a&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;value&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;() ] =&lt;/font&gt;&lt;/b&gt; node&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;value&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;();
            }&lt;/font&gt;&lt;/b&gt;

            node&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt; node&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;next_sibling&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;();
        }
    }&lt;/font&gt;&lt;/b&gt;
    cout&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; &amp;lt;&amp;lt;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt; &quot;========&quot;&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; &amp;lt;&amp;lt;&lt;/font&gt;&lt;/b&gt; endl&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; &amp;lt;&amp;lt;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt; &quot;Check loaded configuration:&quot;&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; &amp;lt;&amp;lt;&lt;/font&gt;&lt;/b&gt; endl&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;

    typedef&lt;/font&gt; map&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;&amp;lt;&lt;/font&gt;&lt;/b&gt;string&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt;string&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;&amp;gt;::&lt;/font&gt;&lt;/b&gt;const_iterator it&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;
    for&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;it i&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;=&lt;/font&gt;&lt;/b&gt;config&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;.&lt;/font&gt;&lt;/b&gt;begin&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;();&lt;/font&gt;&lt;/b&gt; i&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;!=&lt;/font&gt;&lt;/b&gt;config&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;.&lt;/font&gt;&lt;/b&gt;end&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;();&lt;/font&gt;&lt;/b&gt; i&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;++)
    {&lt;/font&gt;&lt;/b&gt;
        cout&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; &amp;lt;&amp;lt;&lt;/font&gt;&lt;/b&gt; i&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;first&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; &amp;lt;&amp;lt;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt; &quot;\t= &quot;&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; &amp;lt;&amp;lt;&lt;/font&gt;&lt;/b&gt; i&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;second&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; &amp;lt;&amp;lt;&lt;/font&gt;&lt;/b&gt; endl&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;
    }&lt;/font&gt;&lt;/b&gt;
    cout&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; &amp;lt;&amp;lt;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt; &quot;Configuration loaded&quot;&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; &amp;lt;&amp;lt;&lt;/font&gt;&lt;/b&gt; endl&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;
    // ---
&lt;/font&gt;&lt;/i&gt;    &lt;/pre&gt;&lt;br /&gt;Стоит добавить, что когда я подставлял в doc.parse&amp;lt;0&amp;gt;( ... ) для проверки забитую в коде текстовую константу, это приводило к падению программы во время работы парсера (run-time exception). Так получалось потому, что RapidXML для скорости применяет &quot;разрушающий&quot; разбор - точнее в процессе работы он заменяет символы после концов символьных сущонстей XML нулевыми байтами. Таким образом они превращаются в &quot;отдельные&quot; строки с точки зрения C/C++ без копирования их содержимого.&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align:left&quot;&gt;&lt;font size=&quot;-2&quot;&gt;&lt;a href=&quot;http://lj.rossia.org/users/shestero/142404.html&quot;&gt;&lt;img src=&quot;http://lj.rossia.org/numreplies/shestero/142404&quot; border=0 width=20 height=14  alt=&quot;number of comments&quot; style=&quot;border:0px;&quot; /&gt; &lt;strong&gt;Comments&lt;/strong&gt;&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;</description>
  <comments>http://lj.rossia.org/users/shestero/142404.html</comments>
  <category>boost</category>
  <category>c++</category>
  <category>it</category>
  <category>rapidxml</category>
  <category>stl</category>
  <category>xml</category>
  <lj:mood>busy</lj:mood>
</item>
<item>
  <guid isPermaLink='true'>http://lj.rossia.org/users/shestero/142080.html</guid>
  <pubDate>Mon, 06 Oct 2014 11:42:52 GMT</pubDate>
  <title>Сжатие потока информации PHP-HTTP-Java</title>
  <link>http://lj.rossia.org/users/shestero/142080.html</link>
  <description>Это логическое продолжение моих статей  «&lt;a href=&quot;http://lj.rossia.org/users/shestero/140121.html&quot;&gt;Сжатие потока информации PHP-HTTP-Qt&lt;/a&gt;» и «&lt;a href=&quot;http://lj.rossia.org/users/shestero/139972.html&quot;&gt;Шифровка потока информации PHP-HTTP-Java&lt;/a&gt;». &lt;br /&gt;&lt;br /&gt;Перед вами код на Java, способный конвеерно принимать запакованный (как в первой упомянутой статье) и возможно зашифрованный (как во второй) XML:&lt;br /&gt;&lt;div align=&quot;left&quot; class=&quot;java&quot;&gt;&lt;br /&gt;&lt;table&gt;   &lt;tr&gt;     &lt;td nowrap=&quot;nowrap&quot; valign=&quot;top&quot; align=&quot;left&quot;&gt;    &lt;code&gt; &lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;import&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;java.util.zip.Inflater;&lt;/font&gt; &lt;br /&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;import&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;java.util.zip.InflaterInputStream;&lt;/font&gt; &lt;br /&gt;&lt;font color=&quot;#3f7f5f&quot;&gt;//&amp;nbsp;................&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;public&amp;nbsp;static&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;void&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;main&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;String&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;[]&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;args&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&amp;nbsp;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#000000&quot;&gt;{&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;System.out.println&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;DecryptorTest&amp;nbsp;HELLO&amp;#34;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#3f7f5f&quot;&gt;//Security.addProvider(&amp;nbsp;new&amp;nbsp;IAIK()&amp;nbsp;);&amp;nbsp;//&lt;wbr /&gt;&amp;nbsp;using&amp;nbsp;IAIK&amp;nbsp;Security&amp;nbsp;Provider&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;java.security.Security.addProvider&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;gnu.crypto.jce.GnuCrypto&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;())&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#3f7f5f&quot;&gt;//&amp;nbsp;Using&amp;nbsp;Hex&amp;nbsp;in&amp;nbsp;Apache&amp;nbsp;Commons:&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#3f7f5f&quot;&gt;//&amp;nbsp;byte[]&amp;nbsp;bytes&amp;nbsp;=&amp;nbsp;Hex.decodeHex(key0.toC&lt;wbr /&gt;harArray());&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;StringBuilder&amp;nbsp;keyc&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;StringBuilder&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;()&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;for&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;int&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;i&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;0&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;key0.length&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;()&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&amp;nbsp;i+=&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;2&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&amp;nbsp;{&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;String&amp;nbsp;str&amp;nbsp;=&amp;nbsp;key0.substring&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;i,&amp;nbsp;i+&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;2&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;keyc.append&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;((&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;char&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;Byte.parseByte&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;str,&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;16&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;))&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;}&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;System.out.println&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;DecryptorTest:&amp;nbsp;Common&amp;nbsp;secret&amp;nbsp;key&amp;nbsp;(pl&lt;wbr /&gt;ain)&amp;nbsp;=&amp;#34;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;+&amp;nbsp;keyc&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;MD5&amp;nbsp;md5&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;MD5&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;()&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#3f7f5f&quot;&gt;//IMessageDigest&amp;nbsp;md5&amp;nbsp;=&amp;nbsp;HashFactory.getIn&lt;wbr /&gt;stance(&amp;#34;MD5&amp;#34;);&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;byte&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;[]&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;iv;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;try&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;{&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;iv&amp;nbsp;=&amp;nbsp;iv0.getBytes&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;UTF-8&amp;#34;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;}&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;catch&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;UnsupportedEncodingException&amp;nbsp;e1&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&amp;nbsp;{&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;System.out.println&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;DecryptorTest:&amp;nbsp;Error:&amp;nbsp;UnsupportedEncodi&lt;wbr /&gt;ngException&amp;nbsp;(UTF-8)&amp;#34;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;}&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;System.out.println&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;DecryptorTest:&amp;nbsp;Common&amp;nbsp;initialization&amp;nbsp;ve&lt;wbr /&gt;ctor&amp;nbsp;length&amp;nbsp;(bytes)&amp;nbsp;=&amp;#34;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;+&amp;nbsp;iv.length&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;md5.update&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;iv,&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;0&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;,&amp;nbsp;iv.length&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;String&amp;nbsp;ivh&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;&amp;#34;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;iv&amp;nbsp;=&amp;nbsp;md5.digest&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;()&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;for&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;int&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;i&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;0&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;iv.length;&amp;nbsp;i++&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&amp;nbsp;{&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;ivh&amp;nbsp;+=&amp;nbsp;String.format&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;%02x&amp;#34;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;,&amp;nbsp;iv&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;[&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;i&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;]&amp;nbsp;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;}&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;System.out.println&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;DecryptorTest:&amp;nbsp;Common&amp;nbsp;initialization&amp;nbsp;ve&lt;wbr /&gt;ctor&amp;nbsp;(MD5)&amp;nbsp;=&amp;#34;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;+&amp;nbsp;ivh&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#3f7f5f&quot;&gt;//&amp;nbsp;encrypt&amp;nbsp;the&amp;nbsp;user&amp;nbsp;password&amp;nbsp;and&amp;nbsp;convert&amp;nbsp;i&lt;wbr /&gt;t&amp;nbsp;to&amp;nbsp;Hex&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;String&amp;nbsp;passwordh;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;try&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;{&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;passwordh&amp;nbsp;=&amp;nbsp;encrypt&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;password0,&amp;nbsp;keyc.toString&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;()&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;,&amp;nbsp;iv&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;}&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;catch&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;InvalidKeyException&amp;nbsp;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;|&amp;nbsp;UnsupportedEncodingException&amp;nbsp;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;|&amp;nbsp;IllegalBlockSizeException&amp;nbsp;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;|&amp;nbsp;BadPaddingException&amp;nbsp;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;|&amp;nbsp;NoSuchAlgorithmException&amp;nbsp;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;|&amp;nbsp;NoSuchProviderException&amp;nbsp;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;|&amp;nbsp;NoSuchPaddingException&amp;nbsp;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;|&amp;nbsp;InvalidAlgorithmParameterException&amp;nbsp;e&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&amp;nbsp;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;{&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;System.out.println&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;DecryptorTest:&amp;nbsp;Error:&amp;nbsp;cannot&amp;nbsp;encrypt&amp;nbsp;us&lt;wbr /&gt;er&amp;nbsp;password!&amp;nbsp;Exception=&amp;#34;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;+e.toString&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;())&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;}&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;System.out.println&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;DecryptorTest:&amp;nbsp;Personal&amp;nbsp;password&amp;nbsp;(encri&lt;wbr /&gt;pted,&amp;nbsp;hex)&amp;nbsp;=&amp;#34;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;+&amp;nbsp;passwordh&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;md5.reset&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;()&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;try&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;{&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;md5.update&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;password0.getBytes&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;UTF-8&amp;#34;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;,&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;0&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;,&amp;nbsp;password0.getBytes&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;UTF-8&amp;#34;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;.length&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;}&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;catch&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;UnsupportedEncodingException&amp;nbsp;e&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&amp;nbsp;{&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;System.out.println&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;DecryptorTest:&amp;nbsp;Error:&amp;nbsp;cannot&amp;nbsp;prepare&amp;nbsp;pa&lt;wbr /&gt;ssword&amp;nbsp;(no&amp;nbsp;UTF-8&amp;nbsp;encoding)&amp;#34;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;}&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;byte&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;[]&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;pwd5&amp;nbsp;=&amp;nbsp;md5.digest&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;()&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#3f7f5f&quot;&gt;//System.out.println(&amp;#34;DecryptorTest:&amp;nbsp;Per&lt;wbr /&gt;sonal&amp;nbsp;password&amp;nbsp;(MD5,&amp;nbsp;hex)&amp;nbsp;=&amp;#34;&amp;nbsp;+&amp;nbsp;password5)&lt;wbr /&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;int&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;keysize;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;keysize&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;32&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#3f7f5f&quot;&gt;//&amp;nbsp;Cipher.getMaxAllowedKeyLength(&amp;#34;Twofis&lt;wbr /&gt;h/CBC/NoPadding&amp;#34;);&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;System.out.println&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;DecryptorTest:&amp;nbsp;maximum&amp;nbsp;key&amp;nbsp;size&amp;nbsp;=&amp;#34;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;+keysize&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;URL&amp;nbsp;url;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;try&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;{&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;url&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;URL&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;surl&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;}&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;catch&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;MalformedURLException&amp;nbsp;e&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&amp;nbsp;{&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;System.out.println&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;DecryptorTest:&amp;nbsp;Error:&amp;nbsp;Malformed&amp;nbsp;URL&amp;#34;&lt;wbr /&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;}&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;HttpURLConnection&amp;nbsp;conn;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;try&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;{&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;conn&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;HttpURLConnection&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;url.openConnection&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;()&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;String&amp;nbsp;post;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;post&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;user=shestero&amp;#34;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;post+=&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;&amp;amp;password=&amp;#34;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;+passwordh;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;conn.setDoOutput&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;true&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#3f7f5f&quot;&gt;//&amp;nbsp;мы&amp;nbsp;будем&amp;nbsp;писать&amp;nbsp;POST&amp;nbsp;данные&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;conn.setDoInput&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;true&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;OutputStreamWriter&amp;nbsp;out&amp;nbsp;=&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;OutputStreamWriter&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;conn.getOutputStream&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;()&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;,&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;UTF-8&amp;#34;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;out.write&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;post&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#3f7f5f&quot;&gt;//&amp;nbsp;out.write(&amp;#34;\r\n&amp;#34;);&amp;nbsp;//&amp;nbsp;перевод&amp;nbsp;строки&amp;nbsp;&lt;wbr /&gt;попадает&amp;nbsp;в&amp;nbsp;значения,&amp;nbsp;передаваемые&amp;nbsp;POST-о&lt;wbr /&gt;м&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;out.close&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;()&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;PushbackInputStream&amp;nbsp;stream&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;PushbackInputStream&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;conn.getInputStream&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;()&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;,&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;1&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;int&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;i0&amp;nbsp;=&amp;nbsp;stream.read&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;()&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;if&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;i0&amp;lt;&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;0&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;{&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;System.out.println&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;DecryptorTest:&amp;nbsp;Warning:&amp;nbsp;empty&amp;nbsp;reply!&lt;wbr /&gt;&amp;#34;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;}&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;else&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;{&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;stream.unread&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;i0&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;InflaterInputStream&amp;nbsp;inf&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;null&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;if&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;i0==&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;0&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;{&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#3f7f5f&quot;&gt;//&amp;nbsp;encrypted&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;stream.skip&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;32&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#3f7f5f&quot;&gt;//&amp;nbsp;skip&amp;nbsp;header&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;System.out.println&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;DecryptorTest:&amp;nbsp;Note:&amp;nbsp;data&amp;nbsp;comes&amp;nbsp;encrypt&lt;wbr /&gt;ed!&amp;#34;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;byte&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;[]&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;key2&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;byte&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;[&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;32&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;]&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;Arrays.fill&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;key2,&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;byte&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;0&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;int&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;j=&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;0&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;for&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;int&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;i=&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;0&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&amp;nbsp;i&amp;lt;keyc.length&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;()&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;||&amp;nbsp;i&amp;lt;pwd5.length;&amp;nbsp;i++&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;{&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;if&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;i&amp;lt;keyc.length&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;())&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;key2&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;[&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;j++&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;]&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;=keyc.toString&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;()&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;.substring&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;i,i+&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;1&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;.getBytes&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;()[&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;0&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;]&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;if&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;i&amp;lt;pwd5.length&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;key2&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;[&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;j++&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;]&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;=pwd5&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;[&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;i&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;]&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;if&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;j&amp;gt;=keysize&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;break&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;}&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;System.out.println&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;DecryptorTest:&amp;nbsp;Personal&amp;nbsp;key&amp;nbsp;to&amp;nbsp;decri&lt;wbr /&gt;pt&amp;nbsp;reply&amp;nbsp;=[&amp;#34;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;+key2+&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;]&amp;#34;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#3f7f5f&quot;&gt;//&amp;nbsp;TODO:&amp;nbsp;Fix&amp;nbsp;key&amp;nbsp;size&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;if&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;j&amp;lt;=&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;16&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;j=&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;16&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;else&amp;nbsp;if&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;j&amp;lt;=&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;24&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;j=&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;24&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;else&amp;nbsp;if&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;j&amp;lt;&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;32&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;j=&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;32&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;System.out.println&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;DecryptorTest:&amp;nbsp;key2.length=&amp;#34;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;+j&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;Cipher&amp;nbsp;cipher&amp;nbsp;=&amp;nbsp;createCipher&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;Cipher.DECRYPT_MODE,&amp;nbsp;key2,&amp;nbsp;iv&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;inf&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;InflaterInputStream&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&amp;nbsp;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;CipherInputStream&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;stream,&amp;nbsp;cipher&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;,&amp;nbsp;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;Inflater&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;true&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#3f7f5f&quot;&gt;//&amp;nbsp;set&amp;nbsp;&apos;nowrap&apos;&amp;nbsp;parameter&amp;nbsp;to&amp;nbsp;&apos;true&apos;&amp;nbsp;here&amp;nbsp;&lt;wbr /&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#3f7f5f&quot;&gt;//&amp;nbsp;r&amp;nbsp;=&amp;nbsp;new&amp;nbsp;BufferedReader(&amp;nbsp;new&amp;nbsp;InputStre&lt;wbr /&gt;amReader(&amp;nbsp;new&amp;nbsp;CipherInputStream(&amp;nbsp;stream,&lt;wbr /&gt;&amp;nbsp;cipher&amp;nbsp;)&amp;nbsp;)&amp;nbsp;);&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;}&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;else&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;{&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#3f7f5f&quot;&gt;//&amp;nbsp;plain&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;System.out.println&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;DecryptorTest:&amp;nbsp;Warning:&amp;nbsp;data&amp;nbsp;comes&amp;nbsp;unen&lt;wbr /&gt;crypted!&amp;#34;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;inf&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;InflaterInputStream&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;stream,&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;Inflater&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;true&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&amp;nbsp;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#3f7f5f&quot;&gt;//r&amp;nbsp;=&amp;nbsp;new&amp;nbsp;BufferedReader(&amp;nbsp;new&amp;nbsp;InputStrea&lt;wbr /&gt;mReader(&amp;nbsp;stream&amp;nbsp;)&amp;nbsp;);&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;}&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;BufferedReader&amp;nbsp;r&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;BufferedReader&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;InputStreamReader&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;inf&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&amp;nbsp;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#3f7f5f&quot;&gt;//&amp;nbsp;Чтение&amp;nbsp;строка&amp;nbsp;за&amp;nbsp;строкой&amp;nbsp;для&amp;nbsp;проверки&lt;wbr /&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;System.out.println&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;====[REPLY&amp;nbsp;FROM&amp;nbsp;SERVER:]===============&lt;wbr /&gt;============&amp;#34;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;String&amp;nbsp;inputLine;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;while&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;((&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;inputLine&amp;nbsp;=&amp;nbsp;r.readLine&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;())&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;!=&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;null&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&amp;nbsp;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;{&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;System.out.println&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;inputLine&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;}&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;r.close&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;()&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;System.out.println&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;====[SUCESS]===========================&lt;wbr /&gt;============&amp;#34;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;}&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;catch&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;IOException&amp;nbsp;e&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&amp;nbsp;{&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;System.out.println&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;DecryptorTest:&amp;nbsp;Error:&amp;nbsp;IOException;&amp;nbsp;URL=&lt;wbr /&gt;&amp;#34;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;+surl&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;}&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;catch&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;InvalidKeyException&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;|&amp;nbsp;&amp;nbsp;NoSuchAlgorithmException&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;|&amp;nbsp;&amp;nbsp;NoSuchProviderException&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;|&amp;nbsp;&amp;nbsp;NoSuchPaddingException&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;|&amp;nbsp;&amp;nbsp;InvalidAlgorithmParameterException&amp;nbsp;e&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&amp;nbsp;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;{&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;System.out.println&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;DecryptorTest:&amp;nbsp;Error:&amp;nbsp;cannot&amp;nbsp;decode:&amp;nbsp;Ex&lt;wbr /&gt;ception=&amp;#34;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;+e.toString&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;())&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;}&amp;nbsp;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;System.out.println&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;DecryptorTest&amp;nbsp;BYE&amp;#34;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;#000000&quot;&gt;}&lt;/font&gt;&lt;/code&gt;   &lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;    &lt;td align=&quot;right&quot;&gt;&lt;small&gt;Исходник обработан: &lt;a href=&quot;http://www.java2html.de&quot; target=&quot;_blank&quot;&gt;Java2html&lt;/a&gt;&lt;/small&gt;    &lt;/td&gt;   &lt;/tr&gt;  &lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align:left&quot;&gt;&lt;font size=&quot;-2&quot;&gt;&lt;a href=&quot;http://lj.rossia.org/users/shestero/142080.html&quot;&gt;&lt;img src=&quot;http://lj.rossia.org/numreplies/shestero/142080&quot; border=0 width=20 height=14  alt=&quot;number of comments&quot; style=&quot;border:0px;&quot; /&gt; &lt;strong&gt;Comments&lt;/strong&gt;&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;</description>
  <comments>http://lj.rossia.org/users/shestero/142080.html</comments>
  <category>it</category>
  <category>java</category>
  <category>php</category>
  <category>zip.inflater</category>
  <lj:mood>busy</lj:mood>
</item>
<item>
  <guid isPermaLink='true'>http://lj.rossia.org/users/shestero/141898.html</guid>
  <pubDate>Mon, 29 Sep 2014 20:20:05 GMT</pubDate>
  <title>Европейский сентябрь 2014</title>
  <link>http://lj.rossia.org/users/shestero/141898.html</link>
  <description>Сказав спасибо лету, теперь следует сказать мне спасибо прошедшему месяцу осени.&lt;br /&gt;Большую часть сентября я провёл в Европе, в основном в Швеции, Дании, Франции (Париже) и Латвии (Рига, Юрмала). Путешествие было весьма удачным, полезным и интересным! :-)&lt;br /&gt;&lt;br /&gt;Вот несколько фотографий из Парижа, из Копенгагена и из эко-поселения в Дании (&lt;a href=&quot;http://www.dyssekilde.dk&quot;&gt;http://www.dyssekilde.dk&lt;/a&gt;):&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://shestero.info/photos4public/2014-09/DSC01720.JPG&quot; width=&quot;900&quot; height=&quot;1200&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://shestero.info/photos4public/2014-09/DSC01644.JPG&quot; width=&quot;900&quot; height=&quot;1200&quot;&gt;&lt;br /&gt;&lt;i&gt;Собор Парижской Богоматери&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://shestero.info/photos4public/2014-09/bDSC01989.JPG&quot; width=&quot;900&quot; height=&quot;675&quot;&gt;&lt;br /&gt;&lt;i&gt;Лувр&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://shestero.info/photos4public/2014-09/bDSC02023.JPG&quot; width=&quot;900&quot; height=&quot;1200&quot;&gt;&lt;br /&gt;&lt;i&gt;Париж, монумент из Египта&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://shestero.info/photos4public/2014-09/DSC01551.JPG&quot; width=&quot;900&quot; height=&quot;675&quot;&gt;&lt;br /&gt;&lt;i&gt;Копегаген&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://shestero.info/photos4public/2014-09/DSC02109.JPG&quot; width=&quot;900&quot; height=&quot;675&quot;&gt;&lt;br /&gt;&lt;i&gt;экопоселение-кохаузинг &lt;a href=&quot;http://www.dyssekilde.dk&quot;&gt;Dyssekilde&lt;/a&gt; (Дания)&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://shestero.info/photos4public/2014-09/DSC02113.JPG&quot; width=&quot;900&quot; height=&quot;675&quot;&gt;&lt;br /&gt;&lt;i&gt;экопоселение-кохаузинг &lt;a href=&quot;http://www.dyssekilde.dk&quot;&gt;Dyssekilde&lt;/a&gt; (Дания)&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://shestero.info/photos4public/2014-09/DSC02412.JPG&quot; width=&quot;900&quot; height=&quot;675&quot;&gt;&lt;br /&gt;&lt;i&gt;Железнодорожный мост через Даугаву - на заднем плане рижская телебашня.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align:left&quot;&gt;&lt;font size=&quot;-2&quot;&gt;&lt;a href=&quot;http://lj.rossia.org/users/shestero/141898.html&quot;&gt;&lt;img src=&quot;http://lj.rossia.org/numreplies/shestero/141898&quot; border=0 width=20 height=14  alt=&quot;number of comments&quot; style=&quot;border:0px;&quot; /&gt; &lt;strong&gt;Comments&lt;/strong&gt;&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;</description>
  <comments>http://lj.rossia.org/users/shestero/141898.html</comments>
  <category>photos</category>
  <category>travel</category>
  <lj:mood>nostalgic</lj:mood>
</item>
<item>
  <guid isPermaLink='true'>http://lj.rossia.org/users/shestero/141704.html</guid>
  <pubDate>Mon, 29 Sep 2014 17:40:04 GMT</pubDate>
  <title>Лето, до свидания!</title>
  <link>http://lj.rossia.org/users/shestero/141704.html</link>
  <description>Уже давно пора мне сказать спасибо прошедшему лету! Спасибо, лето 2014, ты было хорошим! :-)&lt;br /&gt;Я вдоволь и пожил на природе, и достаточно попутешествовал (главным образом в Карелии в июле-августе) и поразмышлял и побыл с приятными мне людьми и наедине с природой...&lt;br /&gt;&lt;br /&gt;Вот несколько фотографий на память о минувшем сезоне:&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://shestero.info/photos4public/2014-08/DSC01200.JPG&quot; width=&quot;900&quot; height=&quot;675&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://shestero.info/photos4public/2014-08/20140810_200107.jpg&quot; width=&quot;900&quot; height=&quot;675&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://shestero.info/photos4public/2014-08/DSC00471.JPG&quot; width=&quot;900&quot; height=&quot;675&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://shestero.info/photos4public/2014-08/DSC01107.JPG&quot; width=&quot;900&quot; height=&quot;675&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://shestero.info/photos4public/2014-08/DSC01308h.JPG&quot; width=&quot;900&quot; height=&quot;675&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://shestero.info/photos4public/2014-08/DSC00668.JPG&quot; width=&quot;900&quot; height=&quot;1200&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align:left&quot;&gt;&lt;font size=&quot;-2&quot;&gt;&lt;a href=&quot;http://lj.rossia.org/users/shestero/141704.html&quot;&gt;&lt;img src=&quot;http://lj.rossia.org/numreplies/shestero/141704&quot; border=0 width=20 height=14  alt=&quot;number of comments&quot; style=&quot;border:0px;&quot; /&gt; &lt;strong&gt;Comments&lt;/strong&gt;&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;</description>
  <comments>http://lj.rossia.org/users/shestero/141704.html</comments>
  <category>photos</category>
  <lj:mood>satisfied</lj:mood>
</item>
<item>
  <guid isPermaLink='true'>http://lj.rossia.org/users/shestero/141518.html</guid>
  <pubDate>Tue, 26 Aug 2014 11:16:08 GMT</pubDate>
  <title>Hospitality Networks</title>
  <link>http://lj.rossia.org/users/shestero/141518.html</link>
  <description>&lt;ul&gt;  &lt;li&gt;&lt;a href=&quot;http://Servas.org&quot; class=&quot;ext&quot; target=&quot;_blank&quot;&gt;Servas.org&lt;/a&gt;&lt;span class=&quot;ext&quot;&gt;&lt;/span&gt; An international, non-governmental, multicultural peace association run by volunteers in over 100 countries.&lt;/li&gt;  &lt;li&gt;&lt;a href=&quot;http://hospitalityclub.org&quot; class=&quot;ext&quot; target=&quot;_blank&quot;&gt;HospitalityClub.org&lt;/a&gt;&lt;span class=&quot;ext&quot;&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;http://globalfreeloaders.com&quot; class=&quot;ext&quot; target=&quot;_blank&quot;&gt;GlobalFreeloaders.com&lt;/a&gt;&lt;span class=&quot;ext&quot;&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;http://www.couchsurfing.com/&quot; class=&quot;ext&quot; target=&quot;_blank&quot;&gt;CouchSurfing.com&lt;/a&gt;&lt;span class=&quot;ext&quot;&gt;&lt;/span&gt; - Probably the biggest hospitality network of this type, with an amazingly large global membership&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://tripping.com&quot; class=&quot;ext&quot; target=&quot;_blank&quot;&gt;Tripping.com&lt;/a&gt;&lt;span class=&quot;ext&quot;&gt;&lt;/span&gt; - A new hospitality network based on cultural exchange.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://bewelcome.org&quot; class=&quot;ext&quot; target=&quot;_blank&quot;&gt;Bewelcome.org&lt;/a&gt;&lt;span class=&quot;ext&quot;&gt;&lt;/span&gt; - Another, newer hospitality network.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.crazyguyonabike.com/resources/categories/?category_id=13&quot; class=&quot;ext&quot; target=&quot;_blank&quot;&gt;Crazyguyonabike&apos; own list&lt;/a&gt;&lt;span class=&quot;ext&quot;&gt;&lt;/span&gt; of private houses offering no-fee hospitality to touring cyclists&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;http://cci.asso.fr/index.php?option=com_content&amp;amp;view=category&amp;amp;id=40&amp;amp;Itemid=53&quot; class=&quot;ext&quot; target=&quot;_blank&quot;&gt;CAC&lt;/a&gt;&lt;span class=&quot;ext&quot;&gt;&lt;/span&gt;, the hospitality branch of &lt;a target=&quot;_blank&quot; href=&quot;http://cci.asso.fr/&quot; class=&quot;ext&quot;&gt;Cyclo-Camping International&lt;/a&gt;&lt;span class=&quot;ext&quot;&gt;&lt;/span&gt;, Association of bicycle travelers. The &lt;a href=&quot;http://cci.asso.fr/index.php?option=com_content&amp;amp;view=category&amp;amp;id=40&amp;amp;Itemid=53&quot; class=&quot;ext&quot; target=&quot;_blank&quot;&gt;CAC website&lt;/a&gt;&lt;span class=&quot;ext&quot;&gt;&lt;/span&gt; is in English, Spanish, and French.&lt;/li&gt; &lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://cdclatinoamerica.wordpress.com/&quot; class=&quot;ext&quot;&gt;Casas de Ciclistas in Latin America&lt;/a&gt;&lt;span class=&quot;ext&quot;&gt;&lt;/span&gt; - the famous Latin hospitality houses for touring cyclists.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://couchwiki.org/en/Rural_Hospex&quot; class=&quot;ext&quot; target=&quot;_blank&quot;&gt;Rural Hospitality Exchange&lt;/a&gt;&lt;span class=&quot;ext&quot;&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.dachgeber.de/&quot; class=&quot;ext&quot; target=&quot;_blank&quot;&gt;&apos;&apos;Dachgeber&apos;&apos; Association Germany&lt;/a&gt;&lt;span class=&quot;ext&quot;&gt;&lt;/span&gt; - a hospitality network for touring cyclists in Germany. Since it comes as a booklet, an advance order of it is needed.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.argus.or.at/info/dachgeber.shtml&quot; class=&quot;ext&quot; target=&quot;_blank&quot;&gt;&apos;&apos;Dachgeber&apos;&apos; Association Austria&lt;/a&gt;&lt;span class=&quot;ext&quot;&gt;&lt;/span&gt; the same for Austria, as well in German. Advance order needed.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://velodach.ch/&quot; class=&quot;ext&quot; target=&quot;_blank&quot;&gt;&apos;&apos;Velodach&apos;&apos; Association Switzerland&lt;/a&gt;&lt;span class=&quot;ext&quot;&gt;&lt;/span&gt; - the same for Switzerland, in German, French and Italian.  Advance order needed.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://beta.ctc.org.uk/&quot; class=&quot;ext&quot; target=&quot;_blank&quot;&gt;U.K. Cyclist&apos;s Hospitality Directory&lt;/a&gt;&lt;span class=&quot;ext&quot;&gt;&lt;/span&gt; - the same for Great Britain.  Advance order needed.&lt;/li&gt;  &lt;/ul&gt;&lt;br /&gt;List from: &lt;a href=&quot;https://www.warmshowers.org&quot;&gt;https://www.warmshowers.org&lt;/a&gt;, see also: &lt;a href=&quot;https://dachgeber.de&quot;&gt;https://dachgeber.de&lt;/a&gt;.&lt;br /&gt;&lt;p&gt;PS Useful inforation for Hitchhickers: &lt;a href=&quot;http://www.hitchbase.com/index.php?LANG=eng&quot;&gt;http://www.hitchbase.com&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align:left&quot;&gt;&lt;font size=&quot;-2&quot;&gt;&lt;a href=&quot;http://lj.rossia.org/users/shestero/141518.html&quot;&gt;&lt;img src=&quot;http://lj.rossia.org/numreplies/shestero/141518&quot; border=0 width=20 height=14  alt=&quot;number of comments&quot; style=&quot;border:0px;&quot; /&gt; &lt;strong&gt;Comments&lt;/strong&gt;&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;</description>
  <comments>http://lj.rossia.org/users/shestero/141518.html</comments>
  <category>links</category>
  <category>references</category>
  <lj:mood>busy</lj:mood>
</item>
<item>
  <guid isPermaLink='true'>http://lj.rossia.org/users/shestero/141287.html</guid>
  <pubDate>Mon, 09 Jun 2014 11:53:53 GMT</pubDate>
  <title>C++/Qt: Получение полного содержимого XML-тега (со вложенными) при SAX-разборе</title>
  <link>http://lj.rossia.org/users/shestero/141287.html</link>
  <description>Задача: при SAX-разборе перехватить полное содержимое определённых тегов в виде исходного текста, как оно есть, со всеми вложенными подтегами.&lt;br /&gt;Хотя задача эта, по-моему, достаточно простая, банальная и затребованная, но по какой-то не понятной причине не нашёл избытка описания готовых её решений.&lt;br /&gt;Зачем удобно перехватывать полный «сырой» текст XML? С ходу столкнулся с двумя возможными причинами:&lt;br /&gt;1. Как известно и у SAX и у DOM разбора есть свои преимущества и недостатки. Возможен большой XML-документ, который по крайней мере удобно разбирать SAX-парсером, но в нём попадаются отсносительно небольшие участки, которые как раз было бы удобно и естественно с помощью DOM.&lt;br /&gt;2. В определённных XML-тегах может находится XHTML-содержимое, разбирать которое не нужно вообще, его надо просто целиком сохранить, например, отправить на визуализацию в GUI-контрол.&lt;br /&gt;&lt;br /&gt;Вероятно хватает и других задач, при которых удобно временно перевести SAX-разбор в режим «перехвата», при попадании на определённый тег. &lt;br /&gt;&lt;br /&gt;Итак, как оказалось в Qt это сделать очень просто: достаточно перекрыть в классе QXmlInputSource публичный виртуальный метод next, который «кормит» прасер анализируемым XML посимвольно.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Вариант №1&lt;/u&gt;:&lt;br /&gt;Обработчик содержимого (наследник QXmlDefaultHandler):&lt;br /&gt;&lt;i&gt;(В случае если при SAX-разборе попался один из интересующих нас «особых» тегов, мы переходим в режим «перехвата», а при закрытии тега выходим из этого режима, обрабатываем результат).&lt;/i&gt;&lt;br /&gt;&lt;pre&gt;&lt;font color=&quot;#FF6633&quot;&gt;bool&lt;/font&gt; Report&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;startElement&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;const&lt;/font&gt; QString&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; &amp;amp;&lt;/font&gt;&lt;/b&gt;namespaceURI&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt; const&lt;/font&gt; QString&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; &amp;amp;&lt;/font&gt;&lt;/b&gt;localName&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;
                          const&lt;/font&gt; QString&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; &amp;amp;&lt;/font&gt;&lt;/b&gt;name&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt; const&lt;/font&gt; QXmlAttributes&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; &amp;amp;&lt;/font&gt;&lt;/b&gt;attrs&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)
{&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;
    if&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;name&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;==&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt;&quot;information&quot;&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt; // &quot;information&quot; is a special tag name
&lt;/font&gt;&lt;/i&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;    {&lt;/font&gt;&lt;/b&gt;
        m_xmlsource&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;BeginIntercept&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;();
    }&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;

    return&lt;/font&gt; RemoteTable&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;startElement&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;namespaceURI&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; localName&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; name&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; attrs&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;);
}&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;
// RemoteTable is a parent class that handle XML content
&lt;/font&gt;&lt;/i&gt;&lt;font color=&quot;#FF6633&quot;&gt;
bool&lt;/font&gt; Report&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;endElement&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;const&lt;/font&gt; QString&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; &amp;amp;&lt;/font&gt;&lt;/b&gt;namespaceURI&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt; const&lt;/font&gt; QString&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; &amp;amp;&lt;/font&gt;&lt;/b&gt;localName&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;
                        const&lt;/font&gt; QString&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; &amp;amp;&lt;/font&gt;&lt;/b&gt;name&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)
{&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;
    if&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;name&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;==&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt;&quot;information&quot;&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;) 
    {&lt;/font&gt;&lt;/b&gt;
        QString info&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt; m_xmlsource&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;EndIntercept&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;();&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;

        if&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;m_pHeader&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;!=&lt;/font&gt;&lt;/b&gt;NULL&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)
        {&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;
            // send XHTML content into QLabel
&lt;/font&gt;&lt;/i&gt;&lt;font color=&quot;#990000&quot;&gt;            const&lt;/font&gt; QString was&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt; m_pHeader&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;text&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;();&lt;/font&gt;&lt;/b&gt;
            m_pHeader&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;setText&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt; was&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;+&lt;/font&gt;&lt;/b&gt;info&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; );
        }
    }&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;

    return&lt;/font&gt; RemoteTable&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;endElement&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;namespaceURI&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; localName&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; name&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;);
}&lt;/font&gt;&lt;/b&gt;&lt;/pre&gt;&lt;br /&gt;Класс ExtXmlInputSource:&lt;br /&gt;&lt;pre&gt;&lt;font color=&quot;#000099&quot;&gt;#ifndef EXTXMLINPUTSOURCE_H
#define EXTXMLINPUTSOURCE_H

#include &amp;lt;QXmlInputSource&amp;gt;

#include &amp;lt;QIODevice&amp;gt;
&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;

class&lt;/font&gt; ExtXmlInputSource&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; :&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt; public&lt;/font&gt; QXmlInputSource&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;
{&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;
public&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;:&lt;/font&gt;&lt;/b&gt;
    ExtXmlInputSource&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;QIODevice&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;*&lt;/font&gt;&lt;/b&gt; dev&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;);&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;

    virtual&lt;/font&gt;&lt;font color=&quot;#FF6633&quot;&gt; void&lt;/font&gt;    BeginIntercept&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;();&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;
    virtual&lt;/font&gt; QString EndIntercept&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;();&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;
    virtual&lt;/font&gt; QChar   next&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;();&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;

protected&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;:&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF6633&quot;&gt;
    bool&lt;/font&gt;            m_interception&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;
    QString         m_content&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;
};&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#000099&quot;&gt;

#endif // EXTXMLINPUTSOURCE_H
&lt;/font&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;
// cpp:
&lt;/font&gt;&lt;/i&gt;
ExtXmlInputSource&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;ExtXmlInputSource&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;QIODevice&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;*&lt;/font&gt;&lt;/b&gt; dev&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)
    :&lt;/font&gt;&lt;/b&gt; QXmlInputSource&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;dev&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)
    ,&lt;/font&gt;&lt;/b&gt; m_interception&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#000000&quot;&gt;false&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)
{
}&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF6633&quot;&gt;

void&lt;/font&gt; ExtXmlInputSource&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;BeginIntercept&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;()
{&lt;/font&gt;&lt;/b&gt;
    m_interception&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#000000&quot;&gt; true&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;
}&lt;/font&gt;&lt;/b&gt;

QChar ExtXmlInputSource&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;next&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;()
{&lt;/font&gt;&lt;/b&gt;
    QChar ret&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt; QXmlInputSource&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;next&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;();&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;

    if&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;m_interception&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)&lt;/font&gt;&lt;/b&gt;
        m_content&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;+=&lt;/font&gt;&lt;/b&gt;ret&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;

    return&lt;/font&gt; ret&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;
}&lt;/font&gt;&lt;/b&gt;
&lt;/pre&gt;&lt;i&gt;Таким образом в накопителе ExtXmlInputSource::m_content получится нужный блок XML-текста плюс закрывающийся тег (если открывающий тег не был вообще «самозакрытым»). Тег для симментрии убираем (если результат направляется в DOM, можно наоборот в начале приписать открывающийся тег)&lt;/i&gt;:&lt;br /&gt;&lt;pre&gt;QString ExtXmlInputSource&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;EndIntercept&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;()
{&lt;/font&gt;&lt;/b&gt;
    m_interception&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#000000&quot;&gt; false&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;

    const&lt;/font&gt; QString res&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt; m_content&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;
    m_content&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;.&lt;/font&gt;&lt;/b&gt;clear&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;();&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;

    // if needed: remove the last (closing) tag
&lt;/font&gt;&lt;/i&gt;&lt;font color=&quot;#FF0000&quot;&gt;    if&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (!&lt;/font&gt;&lt;/b&gt;res&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;.&lt;/font&gt;&lt;/b&gt;isEmpty&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;())&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt; // non-empty tag?
&lt;/font&gt;&lt;/i&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;    {&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF6633&quot;&gt;
        int&lt;/font&gt; pos&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt; res&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;.&lt;/font&gt;&lt;/b&gt;lastIndexOf&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt;&quot;&amp;lt;/&quot;&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;);&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;
        if&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;pos&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;&amp;gt;=&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#999900&quot;&gt;0&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;
            return&lt;/font&gt; res&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;.&lt;/font&gt;&lt;/b&gt;left&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;pos&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;);
    }&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;

    return&lt;/font&gt; res&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;
}&lt;/font&gt;&lt;/b&gt;&lt;/pre&gt;&lt;br /&gt;У этого метода есть недостаток — в режиме «перехвата» парсер всё равно вызывает виртуальные методы обработчика содержимого (в данном случае класса Report, наследника QXmlDefaultHandler), что во-первых не нужно и грузит машину бесполезной работой, во-вторых вносит путаницу и является потенциальной причиной ошибок.&lt;br /&gt;&lt;br /&gt;У меня есть несколько идей, как обойти это. Например, смелая идея (не знаю, на сколько это реализуемо) — запустить DOM-обработчик, на том же QIODevice-источнике информации.&lt;br /&gt;Ниже привожу наверное самое простое решение — временную замену обработчика содержимого.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Вариант №2&lt;/u&gt; (улучшенный):&lt;br /&gt;Класс ExtXmlInputSource2:&lt;br /&gt;&lt;pre&gt;&lt;font color=&quot;#000099&quot;&gt;#ifndef EXTXMLINPUTSOURCE2_H
#define EXTXMLINPUTSOURCE2_H

#include &quot;extxmlinputsource.h&quot;

#include &amp;lt;QXmlDefaultHandler&amp;gt;
#include &amp;lt;QXmlSimpleReader&amp;gt;
&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;
class&lt;/font&gt; ExtXmlInputSource2&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; :&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt; public&lt;/font&gt; ExtXmlInputSource&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt; public&lt;/font&gt; QXmlDefaultHandler&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;
{&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;
public&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;:&lt;/font&gt;&lt;/b&gt;
    ExtXmlInputSource2&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;QIODevice&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;*&lt;/font&gt;&lt;/b&gt; dev&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;);&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF6633&quot;&gt;

    void&lt;/font&gt; Intercept&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;const&lt;/font&gt; QString&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;&amp;amp;&lt;/font&gt;&lt;/b&gt; spectag&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; QXmlSimpleReader&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;*&lt;/font&gt;&lt;/b&gt; reader&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; QXmlDefaultHandler&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;*&lt;/font&gt;&lt;/b&gt; old&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;);&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;

    virtual&lt;/font&gt;&lt;font color=&quot;#FF6633&quot;&gt; bool&lt;/font&gt; endElement&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;const&lt;/font&gt; QString&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;&amp;amp; ,&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt; const&lt;/font&gt; QString&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;&amp;amp; ,&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt; const&lt;/font&gt; QString&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; &amp;amp;&lt;/font&gt;&lt;/b&gt;name&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;);&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;

protected&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;:&lt;/font&gt;&lt;/b&gt;
    QString m_spectag&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;
    QXmlSimpleReader&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;*&lt;/font&gt;&lt;/b&gt; m_reader&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;
    QXmlDefaultHandler&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;*&lt;/font&gt;&lt;/b&gt; m_old&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;
};&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#000099&quot;&gt;

#endif // EXTXMLINPUTSOURCE2_H
&lt;/font&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;
// cpp:
&lt;/font&gt;&lt;/i&gt;
ExtXmlInputSource2&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;ExtXmlInputSource2&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;QIODevice&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;*&lt;/font&gt;&lt;/b&gt; dev&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)
    :&lt;/font&gt;&lt;/b&gt; ExtXmlInputSource&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;dev&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)
{
}&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF6633&quot;&gt;

void&lt;/font&gt; ExtXmlInputSource2&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;Intercept&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;const&lt;/font&gt; QString&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;&amp;amp;&lt;/font&gt;&lt;/b&gt; spectag&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; QXmlSimpleReader&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;*&lt;/font&gt;&lt;/b&gt; reader&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; QXmlDefaultHandler&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;*&lt;/font&gt;&lt;/b&gt; old&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)
{&lt;/font&gt;&lt;/b&gt;
    m_spectag&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt; spectag&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;
    m_reader&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;  =&lt;/font&gt;&lt;/b&gt; reader&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;
    m_old&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;     =&lt;/font&gt;&lt;/b&gt; old&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;

    if&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;m_reader&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;!=&lt;/font&gt;&lt;/b&gt;NULL&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)&lt;/font&gt;&lt;/b&gt;
        m_reader&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;setContentHandler&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;this&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;);&lt;/font&gt;&lt;/b&gt;

    BeginIntercept&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;();
}&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF6633&quot;&gt;

bool&lt;/font&gt; ExtXmlInputSource2&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;endElement&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;const&lt;/font&gt; QString&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;&amp;amp; ,&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt; const&lt;/font&gt; QString&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;&amp;amp; ,&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt; const&lt;/font&gt; QString&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; &amp;amp;&lt;/font&gt;&lt;/b&gt;name&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)
{&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;
    if&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;name&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;==&lt;/font&gt;&lt;/b&gt;m_spectag&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt; // warning: no nested tags &apos;spectag&apos; are expected!
&lt;/font&gt;&lt;/i&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;    {&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;
        if&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;m_old&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;!=&lt;/font&gt;&lt;/b&gt;NULL&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)&lt;/font&gt;&lt;/b&gt;
            m_old&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;characters&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt; EndIntercept&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;() );&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;

        if&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;m_reader&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;!=&lt;/font&gt;&lt;/b&gt;NULL&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)&lt;/font&gt;&lt;/b&gt;
            m_reader&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;setContentHandler&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;m_old&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;);
    }&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;

    return&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#000000&quot;&gt; true&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt; // QXmlDefaultHandler::endElement(namespaceURI, localName, name); == always true&lt;/font&gt;&lt;/i&gt;&lt;b&gt;
&lt;font color=&quot;#663300&quot;&gt;}&lt;/font&gt;&lt;/b&gt;&lt;/pre&gt;&lt;br /&gt;Вызов из основного класса-обработчика содержимого происходит с помощью метода Intercept, а приём перехваченного XML происходит как-бы обычным вызовом виртуального метода characters в рабочем обработчике.&lt;br /&gt;В метод Intercept кроме названия тега передаётся указатель на класс SAX-парскра и указатель на рабочий (основной) обработчик содержимого для автоматического возврата в основной режим, после закрывающегося «особого» тега:&lt;br /&gt;&lt;pre&gt;&lt;font color=&quot;#FF6633&quot;&gt;bool&lt;/font&gt; Report&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;startElement&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;const&lt;/font&gt; QString&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; &amp;amp;&lt;/font&gt;&lt;/b&gt;namespaceURI&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt; const&lt;/font&gt; QString&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; &amp;amp;&lt;/font&gt;&lt;/b&gt;localName&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;
                          const&lt;/font&gt; QString&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; &amp;amp;&lt;/font&gt;&lt;/b&gt;name&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt; const&lt;/font&gt; QXmlAttributes&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; &amp;amp;&lt;/font&gt;&lt;/b&gt;attrs&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)
{&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;
    if&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;name&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;==&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt;&quot;information&quot;&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)
    {&lt;/font&gt;&lt;/b&gt;
        m_xmlsource&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;Intercept&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;name&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; m_reader&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt; this&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;);
    }&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;

    return&lt;/font&gt; RemoteTable&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;startElement&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;namespaceURI&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; localName&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; name&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; attrs&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;);
}&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;
// RemoteTable is a parent class that handle XML content
&lt;/font&gt;&lt;/i&gt;&lt;font color=&quot;#FF6633&quot;&gt;
bool&lt;/font&gt; Report&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;characters&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;const&lt;/font&gt; QString&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; &amp;amp;&lt;/font&gt;&lt;/b&gt;str&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)
{&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;
    if&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;m_name&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;==&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt;&quot;information&quot;&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt; // m_name set in RemoteTable::startElement
&lt;/font&gt;&lt;/i&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;    {&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;
        if&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;m_pHeader&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;!=&lt;/font&gt;&lt;/b&gt;NULL&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)
        {&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;
            // send XHTML content into QLabel
&lt;/font&gt;&lt;/i&gt;&lt;font color=&quot;#990000&quot;&gt;            const&lt;/font&gt; QString was&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt; m_pHeader&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;text&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;();&lt;/font&gt;&lt;/b&gt;
            m_pHeader&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;setText&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt; was&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;+&lt;/font&gt;&lt;/b&gt;str&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; );
        }
    }&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;

    return&lt;/font&gt; RemoteTable&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;characters&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;str&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;);
}&lt;/font&gt;&lt;/b&gt;
&lt;/pre&gt;&lt;br /&gt;Оба эти варианты работают с предположением, что «специальные» теги, которые надо перехватывать не будут вложенными.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Приложение&lt;/u&gt;.&lt;br /&gt;На форуме &lt;a href=&quot;http://rsdn.ru&quot;&gt;RSDN&lt;/a&gt; человек по имени Константин дал мне ценные указания, как это сделать технологиями Microsoft:&lt;br /&gt;«&lt;i&gt;MSXML позволяет это делать минимальными усилиями: класс MXXMLWriter умеет из SAX-событий делать строку с текстом, или писать XML документ в любой IStream, или, как для твоей задачи, делать DOM из SAX.&lt;br /&gt;Когда в своей реализации ISAXContentHandler встретился определённый тег, создавай DOM document, создавай экземпляр COM-класса MXXMLWriter назначив ему output новый DOM document, потом нужно аккуратно форвардить события ISAXContentHandler в этот MXXMLWriter, пока определённый тег не закроется. Когда закроется, получиццо DOM-документ с содержимым тега&lt;/i&gt;».&lt;br /&gt;&lt;br /&gt;Там же мне дали ссылку по этому вопросу на Java:&lt;br /&gt;&lt;a href=&quot;http://stackoverflow.com/questions/7998733/loading-local-chunks-in-dom-while-parsing-a-large-xml-file-in-sax-java&quot;&gt;http://stackoverflow.com/questions/7998&lt;wbr /&gt;733/loading-local-chunks-in-dom-while-pa&lt;wbr /&gt;rsing-a-large-xml-file-in-sax-java&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align:left&quot;&gt;&lt;font size=&quot;-2&quot;&gt;&lt;a href=&quot;http://lj.rossia.org/users/shestero/141287.html&quot;&gt;&lt;img src=&quot;http://lj.rossia.org/numreplies/shestero/141287&quot; border=0 width=20 height=14  alt=&quot;number of comments&quot; style=&quot;border:0px;&quot; /&gt; &lt;strong&gt;Comments&lt;/strong&gt;&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;</description>
  <comments>http://lj.rossia.org/users/shestero/141287.html</comments>
  <category>c++</category>
  <category>it</category>
  <category>qt</category>
  <category>sax</category>
  <category>xml</category>
  <lj:mood>satisfied</lj:mood>
</item>
<item>
  <guid isPermaLink='true'>http://lj.rossia.org/users/shestero/140975.html</guid>
  <pubDate>Mon, 12 May 2014 18:53:02 GMT</pubDate>
  <title>Как я провёл майские праздники 2014: вторые – строительство беседки</title>
  <link>http://lj.rossia.org/users/shestero/140975.html</link>
  <description>&lt;img src=&quot;http://shestero.info/photos4public/2014-05/DSC00277h900x675.JPG&quot; width=&quot;900&quot; height=&quot;675&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://shestero.info/photos4public/2014-05/DSC00280h900x675.JPG&quot; width=&quot;900&quot; height=&quot;675&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align:left&quot;&gt;&lt;font size=&quot;-2&quot;&gt;&lt;a href=&quot;http://lj.rossia.org/users/shestero/140975.html&quot;&gt;&lt;img src=&quot;http://lj.rossia.org/numreplies/shestero/140975&quot; border=0 width=20 height=14  alt=&quot;number of comments&quot; style=&quot;border:0px;&quot; /&gt; &lt;strong&gt;Comments&lt;/strong&gt;&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;</description>
  <comments>http://lj.rossia.org/users/shestero/140975.html</comments>
  <category>building</category>
  <category>commonhouse</category>
  <category>village</category>
  <lj:mood>satisfied</lj:mood>
</item>
<item>
  <guid isPermaLink='true'>http://lj.rossia.org/users/shestero/140698.html</guid>
  <pubDate>Mon, 12 May 2014 18:51:14 GMT</pubDate>
  <title>Как я провёл майские праздники 2014: первые – велопоход</title>
  <link>http://lj.rossia.org/users/shestero/140698.html</link>
  <description>&lt;img src=&quot;http://shestero.info/photos4public/2014-05/IMG_0790h900x600.JPG&quot; width=&quot;900&quot; height=&quot;600&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://shestero.info/photos4public/2014-05/IMG_0763h900x600.JPG&quot; width=&quot;900&quot; height=&quot;600&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://shestero.info/photos4public/2014-05/IMG_0928h900x685.JPG&quot; width=&quot;900&quot; height=&quot;685&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://shestero.info/photos4public/2014-05/IMG_0847h900x600.JPG&quot; width=&quot;900&quot; height=&quot;600&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://shestero.info/photos4public/2014-05/DSC00164h900x675.JPG&quot; width=&quot;900&quot; height=&quot;675&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align:left&quot;&gt;&lt;font size=&quot;-2&quot;&gt;&lt;a href=&quot;http://lj.rossia.org/users/shestero/140698.html&quot;&gt;&lt;img src=&quot;http://lj.rossia.org/numreplies/shestero/140698&quot; border=0 width=20 height=14  alt=&quot;number of comments&quot; style=&quot;border:0px;&quot; /&gt; &lt;strong&gt;Comments&lt;/strong&gt;&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;</description>
  <comments>http://lj.rossia.org/users/shestero/140698.html</comments>
  <category>bicycle</category>
  <category>holiday</category>
  <category>photos</category>
  <lj:mood>satisfied</lj:mood>
</item>
<item>
  <guid isPermaLink='true'>http://lj.rossia.org/users/shestero/140121.html</guid>
  <pubDate>Thu, 24 Apr 2014 02:21:43 GMT</pubDate>
  <title>Сжатие потока информации PHP-HTTP-Qt</title>
  <link>http://lj.rossia.org/users/shestero/140121.html</link>
  <description>Это второе дополнение к моей предыдущей статье «&lt;a href=&quot;http://lj.rossia.org/users/shestero/139630.html&quot;&gt;Шифровка  потока информации PHP-HTTP-Qt&lt;/a&gt;». Для того что бы разобраться с тем что здесь написано, следует сначала ознакомиться с ней.&lt;br /&gt;&lt;br /&gt;Вопрос о возможности их сжатия потока естественно возникает в связи с постоянной передачей больших объёмов разряженных данных (в формате XML) множеству клиентов. Тем более что у конечных пользователей программ-клиантов может быть и не быстрый доступ в Интернет, и сжатие в этом случае может дать существенный выйгрыш в скорости работы.&lt;br /&gt;Я делаю сжатие/разжатие сразу в паре с шифровкой/дешифровкой и так же в связи с шифровкой о нём сейчас рассказываю, тем более что это делается и на стороне сервера и на стороне клиента подобным образом. Но вы, естественно, можете попробовать сделать сжатие/разжатие и без шифровки.&lt;br /&gt;Для сдатия в PHP я использовал всё поточный фильтр &lt;a href=&quot;http://www.php.net/manual/ru/filters.compression.php&quot;&gt;zlib.deflate&lt;/a&gt;. На стороне клиента я применил класс &lt;a href=&quot;http://doc.qt.digia.com/solutions/4/qtiocompressor/qtiocompressor.html&quot;&gt;QtIOCompressor&lt;/a&gt; из подзаброшенной ныне коллекции-библиотеки &lt;a href=&quot;https://qt.gitorious.org/qt-solutions&quot;&gt;Qt Solutions&lt;/a&gt;.&lt;br /&gt;Что бы XML лучше ужался, конечно, надо сжать его до шифровки, а не после.&lt;br /&gt;В моём коде сжатие происходит опционально, в зависимости от значения переменной $compress в PHP и .. в коде клиента C++.&lt;br /&gt;&lt;br /&gt;Итак, установка сжимающего фильтра на PHP (естественно, соответствующий фильтр должен быть доступен; проверка: phpinfo() ) выглядит так:&lt;br /&gt;&lt;code&gt;&lt;span style=&quot;color: #007700&quot;&gt;if&amp;nbsp;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$compress&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;==&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&quot;RawZip&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$compress_alg&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&quot;zlib.deflate&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;;&amp;nbsp;&lt;br /&gt;}&lt;br /&gt;else&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$compress_alg&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;;&amp;nbsp;&lt;br /&gt;}&lt;br /&gt;if&amp;nbsp;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$compress_alg&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;stream_filter_append&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$f&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$compress_alg&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;STREAM_FILTER_WRITE&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&lt;br /&gt;}&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;В исходнике в статье про шифрование место, где фильт вставляется у меня помечено комментарием: &lt;i&gt;&lt;b&gt;...[*]...&lt;/b&gt;&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;В программе клиенте поток-декомпрессор вставляется так:&lt;pre&gt;&lt;font color=&quot;#FF0000&quot;&gt;    if&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;use_compression&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;())&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt; // if use decompressor
&lt;/font&gt;&lt;/i&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;    {&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;   // the input stream is compressed
&lt;/font&gt;&lt;/i&gt;        m_decompressor&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt; new&lt;/font&gt; QtIOCompressor&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;m_decrypter&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;);&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt; // QtIOCompressor *m_decompressor;
&lt;/font&gt;&lt;/i&gt;        m_decompressor&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;setStreamFormat&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;QtIOCompressor&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;RawZipFormat&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;);&lt;/font&gt;&lt;/b&gt;
        m_decompressor&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;open&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;QIODevice&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;ReadOnly&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;);&lt;/font&gt;&lt;/b&gt;

        m_xmlsource&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt; new&lt;/font&gt; QXmlInputSource&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;m_decompressor&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;);
    }&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;
    else&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;
    {&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;   // the input stream isn&apos;t compressed
&lt;/font&gt;&lt;/i&gt;        m_xmlsource&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt; new&lt;/font&gt; QXmlInputSource&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;m_decrypter&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;);
    }&lt;/font&gt;&lt;/b&gt;&lt;/pre&gt;(Соответствующее место в исходнике я помечетил комменарием &lt;b&gt;&lt;i&gt;// [**]&lt;/b&gt;&lt;/i&gt;).&lt;br /&gt;&lt;br /&gt;Таким образом информация проходит всю цепочку из таблицы MySQL через MySQLi — PHP — сжатие — шифровку — сеть (HTTP) — расшифровку — распаковку — SAX-парсер до GUI-виджета таблицы конвеерно!&lt;br /&gt;Слоты для «массажа» района дешифратора и распаковщика в Qt этой цепочки таковы:&lt;pre&gt;&lt;font color=&quot;#FF6633&quot;&gt;
void&lt;/font&gt; WorkplaceTab&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;onReadyRead&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;()
{&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;
    if&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt; m_reader&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;==&lt;/font&gt;&lt;/b&gt;NULL&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; ||&lt;/font&gt;&lt;/b&gt; m_xmlsource&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;==&lt;/font&gt;&lt;/b&gt;NULL&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; )
    {&lt;/font&gt;&lt;/b&gt;
        qDebug&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;() &amp;lt;&amp;lt;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt; &quot;WorkplaceTab::onReadyRead() - warning&quot;&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;
        return&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;
    }&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;

    if&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;m_first&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)
    {&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;
        // выполняется один раз - при приёме превой порции данных
&lt;/font&gt;&lt;/i&gt;        qDebug&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;() &amp;lt;&amp;lt;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt; &quot;m_reader-&amp;gt;parse(m_xmlsource, true);&quot;&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;
        if&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (!&lt;/font&gt;&lt;/b&gt;m_reader&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;parse&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;m_xmlsource&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#000000&quot;&gt; true&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;))&lt;/font&gt;&lt;/b&gt;
            to_idle_state&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;();&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt; // прекращение режима приёма
&lt;/font&gt;&lt;/i&gt;        m_first&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#000000&quot;&gt; false&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;
    }&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF6633&quot;&gt;

    long&lt;/font&gt; watchdog&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#999900&quot;&gt; 100&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;
    while&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt; m_decrypter&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;!=&lt;/font&gt;&lt;/b&gt;NULL&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; &amp;amp;&amp;amp;
           (&lt;/font&gt;&lt;/b&gt;m_decompressor&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;!=&lt;/font&gt;&lt;/b&gt;NULL&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;?&lt;/font&gt;&lt;/b&gt;
                m_decompressor&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;bytesAvailable&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;():&lt;/font&gt;&lt;/b&gt;
                m_decrypter&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;bytesAvailable&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;())&amp;gt;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#999900&quot;&gt;0&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;
         )
    {&lt;/font&gt;&lt;/b&gt;
        m_xmlsource&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;fetchData&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;();&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;
        if&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (!&lt;/font&gt;&lt;/b&gt;m_reader&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;parseContinue&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;())&lt;/font&gt;&lt;/b&gt;
            to_idle_state&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;();&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;    // прекращение режима приёма
&lt;/font&gt;&lt;/i&gt;&lt;font color=&quot;#FF0000&quot;&gt;
        if&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;watchdog&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;--&amp;lt;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#999900&quot;&gt;0&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;
            break&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;
    }
}&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF6633&quot;&gt;

void&lt;/font&gt; WorkplaceTab&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;onDownloadProgress&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;qint64 bytesReceived&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; qint64 bytesTotal&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)
{&lt;/font&gt;&lt;/b&gt;
    logmessage&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt; tr&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt;&quot;%1 bytes and %2 rows loaded&quot;&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;).&lt;/font&gt;&lt;/b&gt;arg&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;bytesReceived&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;).&lt;/font&gt;&lt;/b&gt;arg&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;m_row&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;) );&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;

    if&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;bytesReceived&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;==&lt;/font&gt;&lt;/b&gt;bytesTotal&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)
    {&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;
        // выполняется один раз - после приёма последней порции данных
&lt;/font&gt;&lt;/i&gt;        qDebug&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;() &amp;lt;&amp;lt;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt; &quot;WorkplaceTab::onDownloadProgress LAST TIME&quot;&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;
        if&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;m_reader&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;==&lt;/font&gt;&lt;/b&gt;NULL&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; ||&lt;/font&gt;&lt;/b&gt; m_xmlsource&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;==&lt;/font&gt;&lt;/b&gt;NULL&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; ||&lt;/font&gt;&lt;/b&gt; m_reply&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;==&lt;/font&gt;&lt;/b&gt;NULL&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)
        {&lt;/font&gt;&lt;/b&gt;
            qDebug&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;() &amp;lt;&amp;lt;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt; &quot;Warning: m_reader==NULL or m_xmlsource==NULL or m_reply==NULL!&quot;&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;
            return&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;
        }&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF6633&quot;&gt;

        long&lt;/font&gt; watchdog&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;=&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#999900&quot;&gt;1000000&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF6633&quot;&gt;
        bool&lt;/font&gt; b&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;=&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#000000&quot;&gt;true&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;
        while&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt; b&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; &amp;amp;&amp;amp;&lt;/font&gt;&lt;/b&gt; m_xmlsource&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;data&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;().&lt;/font&gt;&lt;/b&gt;length&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;()&amp;gt;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#999900&quot;&gt;0&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; &amp;amp;&amp;amp; --&lt;/font&gt;&lt;/b&gt;watchdog&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; )
        {&lt;/font&gt;&lt;/b&gt;
            b&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt; m_reader&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;parseContinue&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;();
        }&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;

        if&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;b&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)
        {&lt;/font&gt;&lt;/b&gt;
            m_xmlsource&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;next&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;();&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;        // и ещё раз - вхолостую -
&lt;/font&gt;&lt;/i&gt;            m_reader&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;parseContinue&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;();&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;  // что бы вызвалось QXmlInputSource::EndOfDocument
&lt;/font&gt;&lt;/i&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;        }
    }
}&lt;/font&gt;&lt;/b&gt;
&lt;/pre&gt;&lt;br /&gt;Согласитесь, это круто. Но, увы,&lt;br /&gt;&lt;b&gt;ложка дёгтя&lt;/b&gt;: если с шифрованием-расшифровкой всё идеально (уже прошло многомесячную интенсивную проверку обкатку), то с копрессия-декомпрессия очень редко, но, увы, всё же даёт сбой — в XML-е образуется мусорный участочек, парсер сигнализирует об ошибке... Происходит, правда, это редко, под нагрузкой и никогда — в начале (на маленьких данных не проявляется, обычно где то с 2000 строки), но всё же происходит... Была замечена ситуация, когда сбой был при работе клиента Windows, но не было при работе в Linux, откомпилированного из того-же исходника (правда библиотеки ZLib там были из разных исходников). В то же время сбой имеет тенденцию проявляться в одном и том же месте одного и того же длинного XML.&lt;br /&gt;Так что я эту функцию сжатия в рабочих дистрибутивах сейчас выключаю, но в ряде простых задач с небольшими блоками данных вполне может прокатить. Или можно например в случае ошибок делать перезапрос с отключённым сжатием.&lt;br /&gt;В чём причина не знаю, виноват скорее всего  QtIOCompressor — точнее его не совершенство. Например он в принципе не умеет верно оценивать количество байт, которые он готов отдать в текущий момент.&lt;br /&gt;Есть гипотеза, что ошибку можно обойти, например, усовершенствовав «массаж» или вставив между QtIOCompressor и QDecrypter-ом промежуточный буффер, скажем на 1 Kb.&lt;br /&gt;&lt;br /&gt;Есть также открытые вопросы: какой стандартной утилитой можно распаковать данные, cгенерированные фильтром zlib.deflate в PHP?&lt;br /&gt;Как этот поток распаковать на Java? (пока не дошёл до этого)?&lt;br /&gt;&lt;br /&gt;В общем ещё есть тут над чем поразбираться!&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align:left&quot;&gt;&lt;font size=&quot;-2&quot;&gt;&lt;a href=&quot;http://lj.rossia.org/users/shestero/140121.html&quot;&gt;&lt;img src=&quot;http://lj.rossia.org/numreplies/shestero/140121&quot; border=0 width=20 height=14  alt=&quot;number of comments&quot; style=&quot;border:0px;&quot; /&gt; &lt;strong&gt;Comments&lt;/strong&gt;&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;</description>
  <comments>http://lj.rossia.org/users/shestero/140121.html</comments>
  <category>c++</category>
  <category>it</category>
  <category>php</category>
  <category>qt</category>
  <category>qt solutions</category>
  <category>qtiocompressor</category>
  <category>zlib.deflate</category>
  <lj:mood>satisfied</lj:mood>
</item>
<item>
  <guid isPermaLink='true'>http://lj.rossia.org/users/shestero/139972.html</guid>
  <pubDate>Tue, 22 Apr 2014 16:06:14 GMT</pubDate>
  <title>Шифровка  потока информации PHP-HTTP-Java (GNU-JCE, IAIK-JCE)</title>
  <link>http://lj.rossia.org/users/shestero/139972.html</link>
  <description>Это дополнение к моей предыдущей статье «&lt;a href=&quot;http://lj.rossia.org/users/shestero/139630.html&quot;&gt;Шифровка  потока информации PHP-HTTP-Qt&lt;/a&gt;». Для того что бы понять о чём тут речь, прочитайте её сначала. Здесь приводится простенькая демонстрационная программа-клиент на Java, которая делает то же самое, что я сделал там на C++/Qt, то есть обеспечивает приём и расшифровку данных по тому же протоколу. Она работает с тем же самым серверным скриптом на PHP. Принятые расшифрованные данные (в моём случае XML) выводятся в стандартный поток вывода. Вот исходный код (URL-скрипта и пароли я естесвенно убрал):&lt;pre&gt;&lt;div align=&quot;left&quot; class=&quot;java&quot;&gt;&lt;table&gt;  &lt;tr&gt;     &lt;td nowrap=&quot;nowrap&quot; valign=&quot;top&quot; align=&quot;left&quot;&gt;    &lt;code&gt;
&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;import&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;java.util.Arrays;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;import&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;java.util.HashMap;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;import&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;java.util.Map;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;import&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;java.lang.reflect.Array;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;import&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;java.io.*;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;import&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;java.net.*;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;import&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;java.security.*;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;import&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;javax.crypto.*;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;import&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;javax.crypto.spec.*;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;import&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;gnu.crypto.Registry;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;import&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;gnu.crypto.hash.MD5;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;import&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;gnu.crypto.jce.GnuCrypto;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#3f7f5f&quot;&gt;//&amp;nbsp;GNU-JCE&amp;nbsp;&amp;nbsp;провайдер&amp;nbsp;алгоритма&amp;nbsp;TwoFish&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#3f7f5f&quot;&gt;//&amp;nbsp;import&amp;nbsp;iaik.security.provider.IAIK;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;IAIK-JCE&amp;nbsp;провайдер&amp;nbsp;алгоритма&amp;nbsp;TwoFish&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;public&amp;nbsp;class&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;MainClass&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;{&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;final&amp;nbsp;static&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;String&amp;nbsp;surl&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;http://......./xml.php&amp;#34;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#3f7f5f&quot;&gt;//&amp;nbsp;&amp;#34;baseurl()+&quot;/xml.php&amp;#34;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;final&amp;nbsp;static&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;String&amp;nbsp;iv0&amp;nbsp;&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;i.vector&amp;#34;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;final&amp;nbsp;static&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;String&amp;nbsp;key0&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;..............&amp;#34;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#3f7f5f&quot;&gt;//&amp;nbsp;Hex&amp;nbsp;encoded&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;final&amp;nbsp;static&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;String&amp;nbsp;password0&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;.........&amp;#34;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#3f7f5f&quot;&gt;//&amp;nbsp;personal&amp;nbsp;password&amp;nbsp;in&amp;nbsp;plain&amp;nbsp;text&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#3f7f5f&quot;&gt;//&amp;nbsp;prepare&amp;nbsp;cipher&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;public&amp;nbsp;static&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;Cipher&amp;nbsp;createCipher&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;int&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;mode,&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;byte&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;[]&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;key,&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;byte&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;[]&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;ivBytes&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;throws&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;UnsupportedEncodingException,&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;NoSuchAlgorithmException,&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;NoSuchProviderException,&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;NoSuchPaddingException,&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;InvalidKeyException,&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;InvalidAlgorithmParameterException&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;{&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;IvParameterSpec&amp;nbsp;iv&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;IvParameterSpec&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;ivBytes&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;SecretKey&amp;nbsp;secretKey&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;SecretKeySpec&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;key,&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;Twofish&amp;#34;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#3f7f5f&quot;&gt;//&amp;nbsp;get&amp;nbsp;Cipher&amp;nbsp;and&amp;nbsp;init&amp;nbsp;it&amp;nbsp;for&amp;nbsp;encryption&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#3f7f5f&quot;&gt;//Cipher&amp;nbsp;cipher&amp;nbsp;=&amp;nbsp;Cipher.getInstance(&amp;#34;Twofish/CBC/NoPadding&amp;#34;,&amp;nbsp;&amp;#34;IAIK&amp;#34;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;IAIK&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;Cipher&amp;nbsp;cipher&amp;nbsp;=&amp;nbsp;Cipher.getInstance&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;Twofish/CBC/NoPadding&amp;#34;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;,&amp;nbsp;Registry.GNU_CRYPTO&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#3f7f5f&quot;&gt;//&amp;nbsp;GNU&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;cipher.init&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;mode,&amp;nbsp;secretKey,&amp;nbsp;iv&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;return&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;cipher;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;}&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#3f7f5f&quot;&gt;//&amp;nbsp;encrypt&amp;nbsp;string&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;public&amp;nbsp;static&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;String&amp;nbsp;encrypt&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;String&amp;nbsp;source,&amp;nbsp;String&amp;nbsp;key,&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;byte&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;[]&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;iv&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;throws&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;UnsupportedEncodingException,&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;InvalidKeyException,&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;IllegalBlockSizeException,&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;BadPaddingException,&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;NoSuchAlgorithmException,&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;NoSuchProviderException,&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;NoSuchPaddingException,&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;InvalidAlgorithmParameterException&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;{&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;Cipher&amp;nbsp;cipher&amp;nbsp;=&amp;nbsp;createCipher&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;Cipher.ENCRYPT_MODE,&amp;nbsp;key.getBytes&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;UTF-8&amp;#34;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;,&amp;nbsp;iv&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#3f7f5f&quot;&gt;//&amp;nbsp;encrypt&amp;nbsp;data&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;while&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;source.length&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;()&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;%&amp;nbsp;cipher.getBlockSize&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;()&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;!=&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;0&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;source+=&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;\0&amp;#34;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#3f7f5f&quot;&gt;//&amp;nbsp;padding&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;byte&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;[]&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;cipherText&amp;nbsp;=&amp;nbsp;cipher.doFinal&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;source.getBytes&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;UTF-8&amp;#34;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&amp;nbsp;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#3f7f5f&quot;&gt;//&amp;nbsp;перевод&amp;nbsp;cipherText&amp;nbsp;в&amp;nbsp;HEX-представление&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;String&amp;nbsp;encryptedString&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;&amp;#34;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;for&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;int&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;i&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;0&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;cipherText.length;&amp;nbsp;i++&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&amp;nbsp;{&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;encryptedString&amp;nbsp;+=&amp;nbsp;String.format&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;%02x&amp;#34;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;,&amp;nbsp;cipherText&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;[&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;i&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;])&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;}&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#3f7f5f&quot;&gt;//&amp;nbsp;encryptedText&amp;nbsp;=&amp;nbsp;Base64Coder.encodeLines(encryptedText);&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;return&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;encryptedString;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;}&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;public&amp;nbsp;static&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;void&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;main&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;String&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;[]&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;args&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&amp;nbsp;{&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;System.out.println&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;DecryptorTest&amp;nbsp;HELLO&amp;#34;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#3f7f5f&quot;&gt;//&amp;nbsp;Security.addProvider(&amp;nbsp;new&amp;nbsp;IAIK()&amp;nbsp;);&amp;nbsp;//&amp;nbsp;using&amp;nbsp;IAIK&amp;nbsp;Security&amp;nbsp;Provider&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;java.security.Security.addProvider&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;GnuCrypto&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;())&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#3f7f5f&quot;&gt;//&amp;nbsp;Using&amp;nbsp;Hex&amp;nbsp;in&amp;nbsp;Apache&amp;nbsp;Commons:&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#3f7f5f&quot;&gt;//&amp;nbsp;byte[]&amp;nbsp;bytes&amp;nbsp;=&amp;nbsp;Hex.decodeHex(key0.toCharArray());&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;StringBuilder&amp;nbsp;keyc&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;StringBuilder&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;()&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;for&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;int&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;i&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;0&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;key0.length&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;()&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&amp;nbsp;i+=&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;2&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&amp;nbsp;{&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;String&amp;nbsp;str&amp;nbsp;=&amp;nbsp;key0.substring&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;i,&amp;nbsp;i+&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;2&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;keyc.append&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;((&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;char&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;Byte.parseByte&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;str,&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;16&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;))&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;}&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;System.out.println&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;DecryptorTest:&amp;nbsp;Common&amp;nbsp;secret&amp;nbsp;key&amp;nbsp;(plain)&amp;nbsp;=&amp;#34;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;+&amp;nbsp;keyc&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;MD5&amp;nbsp;md5&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;MD5&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;()&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#3f7f5f&quot;&gt;//IMessageDigest&amp;nbsp;md5&amp;nbsp;=&amp;nbsp;HashFactory.getInstance(&amp;#34;MD5&amp;#34;);&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;byte&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;[]&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;iv;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;try&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;{&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;iv&amp;nbsp;=&amp;nbsp;iv0.getBytes&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;UTF-8&amp;#34;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;}&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;catch&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;UnsupportedEncodingException&amp;nbsp;e1&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&amp;nbsp;{&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;System.out.println&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;DecryptorTest:&amp;nbsp;Error:&amp;nbsp;UnsupportedEncodingException&amp;nbsp;(UTF-8)&amp;#34;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;}&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;System.out.println&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;DecryptorTest:&amp;nbsp;Common&amp;nbsp;initialization&amp;nbsp;vector&amp;nbsp;length&amp;nbsp;(bytes)&amp;nbsp;=&amp;#34;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;+&amp;nbsp;iv.length&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;md5.update&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;iv,&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;0&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;,&amp;nbsp;iv.length&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;String&amp;nbsp;ivh&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;&amp;#34;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;iv&amp;nbsp;=&amp;nbsp;md5.digest&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;()&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;for&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;int&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;i&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;0&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;iv.length;&amp;nbsp;i++&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&amp;nbsp;{&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;ivh&amp;nbsp;+=&amp;nbsp;String.format&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;%02x&amp;#34;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;,&amp;nbsp;iv&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;[&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;i&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;]&amp;nbsp;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;}&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;System.out.println&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;DecryptorTest:&amp;nbsp;Common&amp;nbsp;initialization&amp;nbsp;vector&amp;nbsp;(MD5)&amp;nbsp;=&amp;#34;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;+&amp;nbsp;ivh&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#3f7f5f&quot;&gt;//&amp;nbsp;encrypt&amp;nbsp;the&amp;nbsp;user&amp;nbsp;password&amp;nbsp;and&amp;nbsp;convert&amp;nbsp;it&amp;nbsp;to&amp;nbsp;Hex&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;String&amp;nbsp;passwordh;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;try&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;{&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;passwordh&amp;nbsp;=&amp;nbsp;encrypt&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;password0,&amp;nbsp;keyc.toString&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;()&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;,&amp;nbsp;iv&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;}&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;catch&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;InvalidKeyException&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;|&amp;nbsp;UnsupportedEncodingException&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;|&amp;nbsp;IllegalBlockSizeException&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;|&amp;nbsp;BadPaddingException&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;|&amp;nbsp;NoSuchAlgorithmException&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;|&amp;nbsp;NoSuchProviderException&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;|&amp;nbsp;NoSuchPaddingException&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;|&amp;nbsp;InvalidAlgorithmParameterException&amp;nbsp;e&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;{&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;System.out.println&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;DecryptorTest:&amp;nbsp;Error:&amp;nbsp;cannot&amp;nbsp;encrypt&amp;nbsp;user&amp;nbsp;password!&amp;nbsp;Exception=&amp;#34;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;+e.toString&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;())&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;}&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;System.out.println&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;DecryptorTest:&amp;nbsp;Personal&amp;nbsp;password&amp;nbsp;(encripted,&amp;nbsp;hex)&amp;nbsp;=&amp;#34;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;+&amp;nbsp;passwordh&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;md5.reset&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;()&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;try&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;{&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;md5.update&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;password0.getBytes&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;UTF-8&amp;#34;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;,&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;0&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;,&amp;nbsp;password0.getBytes&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;UTF-8&amp;#34;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;.length&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;}&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;catch&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;UnsupportedEncodingException&amp;nbsp;e&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&amp;nbsp;{&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;System.out.println&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;DecryptorTest:&amp;nbsp;Error:&amp;nbsp;cannot&amp;nbsp;prepare&amp;nbsp;password&amp;nbsp;(no&amp;nbsp;UTF-8&amp;nbsp;encoding)&amp;#34;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;}&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;byte&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;[]&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;pwd5&amp;nbsp;=&amp;nbsp;md5.digest&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;()&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#3f7f5f&quot;&gt;//System.out.println(&amp;#34;DecryptorTest:&amp;nbsp;Personal&amp;nbsp;password&amp;nbsp;(MD5,&amp;nbsp;hex)&amp;nbsp;=&amp;#34;&amp;nbsp;+&amp;nbsp;password5);&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;int&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;keysize;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;keysize&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;32&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#3f7f5f&quot;&gt;//&amp;nbsp;Cipher.getMaxAllowedKeyLength(&amp;#34;Twofish/CBC/NoPadding&amp;#34;);&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;System.out.println&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;DecryptorTest:&amp;nbsp;maximum&amp;nbsp;key&amp;nbsp;size&amp;nbsp;=&amp;#34;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;+keysize&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;URL&amp;nbsp;url;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;try&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;{&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;url&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;URL&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;surl&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;}&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;catch&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;MalformedURLException&amp;nbsp;e&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&amp;nbsp;{&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;System.out.println&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;DecryptorTest:&amp;nbsp;Error:&amp;nbsp;Malformed&amp;nbsp;URL&amp;#34;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;return&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;}&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;HttpURLConnection&amp;nbsp;conn;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;InputStream&amp;nbsp;stream;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;try&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;{&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;conn&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;HttpURLConnection&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;url.openConnection&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;()&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;String&amp;nbsp;post;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;post&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;user=shestero&amp;#34;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;post+=&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;&amp;amp;password=&amp;#34;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;+passwordh;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;conn.setDoOutput&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;true&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#3f7f5f&quot;&gt;//&amp;nbsp;мы&amp;nbsp;будем&amp;nbsp;писать&amp;nbsp;POST&amp;nbsp;данные&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;conn.setDoInput&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;true&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;OutputStreamWriter&amp;nbsp;out&amp;nbsp;=&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;OutputStreamWriter&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;conn.getOutputStream&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;()&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;,&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;UTF-8&amp;#34;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;out.write&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;post&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#3f7f5f&quot;&gt;//&amp;nbsp;out.write(&amp;#34;\r\n&amp;#34;);&amp;nbsp;//&amp;nbsp;перевод&amp;nbsp;строки&amp;nbsp;попадает&amp;nbsp;в&amp;nbsp;значения,&amp;nbsp;передаваемые&amp;nbsp;POST-ом&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;out.close&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;()&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;stream&amp;nbsp;=&amp;nbsp;conn.getInputStream&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;()&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;stream.mark&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;1&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;int&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;i0&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;0&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;font color=&quot;#3f7f5f&quot;&gt;//stream.read();&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;BufferedReader&amp;nbsp;r;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;if&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;i0==&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;0&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;{&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;stream.skip&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;32&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#3f7f5f&quot;&gt;//&amp;nbsp;skip&amp;nbsp;header&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#3f7f5f&quot;&gt;//&amp;nbsp;encrypted&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;System.out.println&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;DecryptorTest:&amp;nbsp;Note:&amp;nbsp;data&amp;nbsp;comes&amp;nbsp;encrypted!&amp;#34;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;byte&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;[]&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;key2&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;byte&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;[&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;32&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;]&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;Arrays.fill&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;key2,&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;byte&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;0&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;int&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;j=&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;0&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;for&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;int&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;i=&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;0&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&amp;nbsp;i&amp;lt;keyc.length&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;()&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;||&amp;nbsp;i&amp;lt;pwd5.length;&amp;nbsp;i++&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;{&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;if&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;i&amp;lt;keyc.length&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;())&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;key2&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;[&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;j++&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;]&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;=keyc.toString&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;()&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;.substring&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;i,i+&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;1&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;.getBytes&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;()[&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;0&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;]&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;if&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;i&amp;lt;pwd5.length&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;key2&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;[&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;j++&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;]&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;=pwd5&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;[&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;i&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;]&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;if&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;j&amp;gt;=keysize&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;break&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;}&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;System.out.println&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;DecryptorTest:&amp;nbsp;Personal&amp;nbsp;key&amp;nbsp;to&amp;nbsp;decript&amp;nbsp;reply&amp;nbsp;=[&amp;#34;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;+key2+&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;]&amp;#34;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#3f7f5f&quot;&gt;//&amp;nbsp;TODO:&amp;nbsp;Fix&amp;nbsp;key&amp;nbsp;size&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;if&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;j&amp;lt;=&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;16&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;j=&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;16&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;else&amp;nbsp;if&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;j&amp;lt;=&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;24&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;j=&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;24&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;else&amp;nbsp;if&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;j&amp;lt;&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;32&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;j=&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;32&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;System.out.println&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;DecryptorTest:&amp;nbsp;key2.length=&amp;#34;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;+j&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;Cipher&amp;nbsp;cipher&amp;nbsp;=&amp;nbsp;createCipher&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;Cipher.DECRYPT_MODE,&amp;nbsp;key2,&amp;nbsp;iv&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;r&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;BufferedReader&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;InputStreamReader&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;CipherInputStream&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;stream,&amp;nbsp;cipher&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&amp;nbsp;)&amp;nbsp;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;}&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;else&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;{&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#3f7f5f&quot;&gt;//&amp;nbsp;plain&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;stream.reset&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;()&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;r&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;BufferedReader&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;new&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;InputStreamReader&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;stream&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&amp;nbsp;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;System.out.println&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;DecryptorTest:&amp;nbsp;Warning:&amp;nbsp;data&amp;nbsp;comes&amp;nbsp;unencrypted!&amp;#34;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;}&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#3f7f5f&quot;&gt;//&amp;nbsp;Чтение&amp;nbsp;строка&amp;nbsp;за&amp;nbsp;строкой&amp;nbsp;для&amp;nbsp;проверки&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;System.out.println&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;====[REPLY&amp;nbsp;FROM&amp;nbsp;SERVER:]===========================&amp;#34;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;String&amp;nbsp;inputLine;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;while&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;((&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;inputLine&amp;nbsp;=&amp;nbsp;r.readLine&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;())&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;!=&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;null&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;{&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;System.out.println&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;inputLine&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;}&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;r.close&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;()&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;System.out.println&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;====[SUCESS]=======================================&amp;#34;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;}&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;catch&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;IOException&amp;nbsp;e&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&amp;nbsp;{&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;System.out.println&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;DecryptorTest:&amp;nbsp;Error:&amp;nbsp;IOException;&amp;nbsp;URL=&amp;#34;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;+surl&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;}&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#7f0055&quot;&gt;&lt;b&gt;catch&amp;nbsp;&lt;/b&gt;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;InvalidKeyException&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;|&amp;nbsp;&amp;nbsp;NoSuchAlgorithmException&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;|&amp;nbsp;&amp;nbsp;NoSuchProviderException&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;|&amp;nbsp;&amp;nbsp;NoSuchPaddingException&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;|&amp;nbsp;&amp;nbsp;InvalidAlgorithmParameterException&amp;nbsp;e&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;{&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;System.out.println&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;DecryptorTest:&amp;nbsp;Error:&amp;nbsp;cannot&amp;nbsp;decode:&amp;nbsp;Exception=&amp;#34;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;+e.toString&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;())&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;}&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;System.out.println&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2a00ff&quot;&gt;&amp;#34;DecryptorTest&amp;nbsp;BYE&amp;#34;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;}&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#ffffff&quot;&gt;&lt;/font&gt;&lt;br /&gt;
&lt;font color=&quot;#000000&quot;&gt;}&lt;/font&gt;&lt;/code&gt;   &lt;/td&gt;     &lt;/tr&gt;     &lt;tr&gt;
    &lt;td align=&quot;right&quot;&gt;&lt;small&gt;Исходник обработан: &lt;a href=&quot;http://www.java2html.de&quot; target=&quot;_blank&quot;&gt;Java2html&lt;/a&gt;&lt;/small&gt;    &lt;/td&gt;   &lt;/tr&gt;  &lt;/table&gt;&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;Ради алгоритма Twofish я использовал из &lt;a href=&quot;https://www.gnu.org/software/gnu-crypto&quot;&gt;GNU-JCE&lt;/a&gt; , а также пробовал коммерческий &lt;a href=&quot;http://jce.iaik.tugraz.at/sic/Products/Core-Crypto-Toolkits/JCA_JCE&quot;&gt;IAIK&lt;/a&gt; с закрытым исходным кодом.&lt;br /&gt;&lt;br /&gt;См. также: &lt;a href=&quot;http://www.cryptix.org&quot;&gt;http://www.cryptix.org&lt;/a&gt; , &lt;a href=&quot;http://bouncycastle.org&quot;&gt;http://bouncycastle.org&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align:left&quot;&gt;&lt;font size=&quot;-2&quot;&gt;&lt;a href=&quot;http://lj.rossia.org/users/shestero/139972.html&quot;&gt;&lt;img src=&quot;http://lj.rossia.org/numreplies/shestero/139972&quot; border=0 width=20 height=14  alt=&quot;number of comments&quot; style=&quot;border:0px;&quot; /&gt; &lt;strong&gt;Comments&lt;/strong&gt;&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;</description>
  <comments>http://lj.rossia.org/users/shestero/139972.html</comments>
  <category>cryptography</category>
  <category>gnu</category>
  <category>iaik</category>
  <category>it</category>
  <category>java</category>
  <category>jce</category>
  <category>php</category>
  <category>twofish</category>
</item>
<item>
  <guid isPermaLink='true'>http://lj.rossia.org/users/shestero/139630.html</guid>
  <pubDate>Sun, 20 Apr 2014 20:06:11 GMT</pubDate>
  <title>Шифровка  потока информации PHP-HTTP-Qt. Часть 1</title>
  <link>http://lj.rossia.org/users/shestero/139630.html</link>
  <description>В этом посте расскажу о том, как поточно шифровать данные, передаваемые из PHP-скрипта в программу-клиент по HTTP. «Поточно» обозначает, что шифровка-передача-расшифровка происходит параллельно их поступлению (в данном случае из небуферизированного запроса к MySQL).&lt;br /&gt;Как известно, данные передаваемые по HTTP никак не защищены и могут быть легко перехвачены и даже изменены на промежуточных узлах сети. Поэтому, если не использовать HTTPS, весьма уместно ценные данные при передаче зашифравать.&lt;br /&gt;&lt;br /&gt;Данные я предаю в формате XML. Программа клиент сделаная на C++ и Qt расшифровав, направляет их в SAX-парсер (QXmlSimpleReader, XML-handler) и далее в GUI-таблицу QTableWidget «на лету».&lt;br /&gt;&lt;br /&gt;Шифровка на сервере выполняется исключительно средствами PHP (поточным фильтром). Для расшифровки информации в клиенте я использовал библиотеку &lt;a href=&quot;http://www.cryptopp.com&quot;&gt;CryptoC++&lt;/a&gt;.&lt;br /&gt;Я использовал древнюю Qt 4.5.0. Программа клиент разрабатывалась и компилировалась под Linux, а также (кросс-компилятором) под Windows.&lt;br /&gt;Шифр я выбрал &lt;a href=&quot;http://en.wikipedia.org/wiki/Twofish&quot;&gt;Twofish&lt;/a&gt;, который сейчас считается весьма стойким. Шифромание и дешифровка Twofish происходит блоками по 16 байт, причём я использовал &lt;a href=&quot;http://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Cipher-block_chaining_.28CBC.29&quot;&gt;режим сцеплания блоков шифротекста (CBC)&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Я использовал два пароля — один общий для всех пользователей — вбивается в HEX-формате в настройках программы. Там же вбивается общий начальный вектор инициализации блока шифрования. Также у пользователя есть индивидуальный (относительно короткий) пароль, который он вводит каждый раз при старте программы для авторизации.&lt;br /&gt;Для авторизации я посылаю POST-параметром HEX-форму индивидуального пароля пользователя, зашифрованный общим паролем (переведённым в бинарный формат из HEX-представления). На сервере происходит расшифровка его и сопоставление с хранящимся там паролем (или MD5-суммой).&lt;br /&gt;Конечно, ещё стоит добавить до шифровки изменяющуюся не повотояющуюся последовательность, для того что бы нельзя было тупо перехватить и использовать это шифрованное значение. Сделаю это в будущем.&lt;br /&gt;Рабочий ключ для шифровки и расшифровки данных создаю из бинарного представления MD5-суммы индивидуального пароля и из общего пароля беря оттуда и оттуда байты по очереди.&lt;br /&gt;Мой серверный скрипт умеет посылать нешифрованный ответ — это удобно в случае если произошла какая-то ошибка (например, пароль не верный) и для отладки. Для того что бы отличать шифрованный ответ от не шифрованного в первом случае я в начале отправляю «заголовок» - 32 байта (два 16-байтовых блока), первый из которых является нулём. В XML-е вообще не должно быть нулевых байт, так что это — надёжный признак.  Не шифрованный XML идёт обычно, без всякого заголовка.&lt;br /&gt;Все эти детали не относятся прямо к теме, но, надеюсь, они помогут разобраться в моём коде, который я привожу в статье. Он уже прошёл &quot;обкадку&quot; и с уверенностью можно сказать, что всё работает надёжно под Linux и Windows (по крайней мере при компиляции с библиотеками, которые у меня)!&lt;br /&gt;&lt;br /&gt;Вот важные фрагменты PHP серверной части:&lt;code&gt;&lt;span style=&quot;color: #000000&quot;&gt;&lt;br /&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;date_default_timezone_set&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&quot;Europe/Moscow&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&lt;br&gt;&lt;br&gt;@&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;ini_set&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&apos;output_buffering&apos;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;header&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&apos;Content-Transfer-Encoding:&amp;nbsp;binary&apos;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$alg&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;MCRYPT_TWOFISH&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;//&amp;nbsp;MCRYPT_TripleDES;&amp;nbsp;//&amp;nbsp;MCRYPT_PANAMA;&lt;wbr /&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$mode&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;MCRYPT_MODE_CBC&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;//&amp;nbsp;MCRYPT_MODE_STREAM;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$ivsize&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;mcrypt_get_iv_size&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$alg&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$mode&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&amp;nbsp;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$z&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;;for(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$i&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$i&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$ivsize&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$i&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;++)&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$z&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;.=&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&quot;\0&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;//&amp;nbsp;нулевой&amp;nbsp;блок&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$iv&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$z&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;;&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;//&amp;nbsp;получаем&amp;nbsp;вектор&amp;nbsp;инициализации&amp;nbsp;из&amp;nbsp;табл&lt;wbr /&gt;ицы&amp;nbsp;с&amp;nbsp;настроечными&amp;nbsp;параметрами:&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$ksql&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&quot;SELECT&amp;nbsp;*,&amp;nbsp;MD5(value)&amp;nbsp;as&amp;nbsp;M&amp;nbsp;FROM&amp;nbsp;paramete&lt;wbr /&gt;rs&amp;nbsp;WHERE&amp;nbsp;name=&apos;iv&apos;&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$rr0a&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$mysqli1&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;query&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$ksql&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&amp;nbsp;&lt;br&gt;if&amp;nbsp;(&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$rr0a&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;&amp;amp;&amp;amp;&amp;nbsp;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$row&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$rr0a&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;fetch_assoc&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;())&amp;nbsp;)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$ivh&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$row&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&quot;M&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;];&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;//&amp;nbsp;MD5&lt;br&gt;&amp;nbsp;&amp;nbsp;//&amp;nbsp;assert&amp;nbsp;length($ivh)=32&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$b&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;pack&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&quot;H*&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$ivh&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;//&amp;nbsp;OR:&lt;br&gt;&amp;nbsp;&amp;nbsp;//&amp;nbsp;$b&amp;nbsp;=&amp;nbsp;hex2bin($ivh);&amp;nbsp;//&amp;nbsp;request&amp;nbsp;P&lt;wbr /&gt;HP&amp;nbsp;5.4&amp;nbsp;!&lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;if&amp;nbsp;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$b&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;===&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;)&lt;br&gt;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$message&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&quot;110\tCannot&amp;nbsp;decode&amp;nbsp;initialization&amp;nbsp;vecto&lt;wbr /&gt;r&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$ivh&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;!&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;else&lt;br&gt;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$iv&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$b&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;}&lt;br&gt;}&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;…&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;//&amp;nbsp;проверка&amp;nbsp;авторизации&amp;nbsp;происходит&amp;nbsp;так&lt;wbr /&gt;:&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$password&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;nbsp;(string)&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;pack&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&quot;H*&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$password&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$password&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;trim&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;mcrypt_decrypt&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$alg&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$key&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$password&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$mode&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$iv&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;),&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&quot;\x00..\x1F&quot;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;user_check&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$user&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$password&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;//&amp;nbsp;set&amp;nbsp;second&amp;nbsp;argument&amp;nbsp;to&amp;nbsp;false&amp;nbsp;here&amp;nbsp;to&amp;nbsp;d&lt;wbr /&gt;isable&amp;nbsp;passwords&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$pwd&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;md5&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$password&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;…&lt;br&gt;&lt;br&gt;ob_flush&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;();&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$f&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;fopen&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&apos;php://output&apos;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&apos;w&apos;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;//&amp;nbsp;пишем&amp;nbsp;XML-информацию&amp;nbsp;так:&amp;nbsp;fwrite(&amp;nbsp;$f,&lt;wbr /&gt;&amp;nbsp;…);&lt;br&gt;//&amp;nbsp;...[*]...&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$encr&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;nbsp;((!&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$message&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;)&amp;nbsp;||&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$message&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;&amp;lt;=&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;//&amp;nbsp;$message&amp;nbsp;у&amp;nbsp;меня&amp;nbsp;сигнализирует&amp;nbsp;об&amp;nbsp;ошиб&lt;wbr /&gt;ке&lt;br&gt;//$encr&amp;nbsp;=&amp;nbsp;false;&amp;nbsp;←&amp;nbsp;что&amp;nbsp;бы&amp;nbsp;отключить&amp;nbsp;шифр&lt;wbr /&gt;овку&amp;nbsp;для&amp;nbsp;отладки&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;if&amp;nbsp;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$encr&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;)&amp;nbsp;echo&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$z&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;md5&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$iv&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;//&amp;nbsp;write&amp;nbsp;16&amp;nbsp;zero&amp;nbsp;bytes&amp;nbsp;+&amp;nbsp;16&amp;nbsp;bytes&amp;nbsp;of&amp;nbsp;iv&amp;nbsp;&lt;wbr /&gt;(признак&amp;nbsp;шифрованной&amp;nbsp;информации&amp;nbsp;-&amp;nbsp;«загол&lt;wbr /&gt;овок»)&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;…&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;//&amp;nbsp;формирование&amp;nbsp;рабочего&amp;nbsp;ключа&amp;nbsp;mix&amp;nbsp;$key&amp;nbsp;a&lt;wbr /&gt;nd&amp;nbsp;$pwd&amp;nbsp;into&amp;nbsp;$key1&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$pwd&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;pack&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&quot;H*&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$pwd&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;//&amp;nbsp;convert&amp;nbsp;to&amp;nbsp;binary&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$key1&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&quot;&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;;&lt;br&gt;for&amp;nbsp;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$i&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$i&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;strlen&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$key&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;)&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$i&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;strlen&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$pwd&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$i&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;++)&lt;br&gt;{&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$key1&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;.=&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$key&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$i&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;].&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$pwd&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$i&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;];&amp;nbsp;}&lt;br&gt;if&amp;nbsp;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;strlen&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$key&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;)&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;strlen&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$pwd&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;))&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$key1&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;.=&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;substr&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$key&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;strlen&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$pwd&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;));&lt;br&gt;if&amp;nbsp;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;strlen&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$key&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;)&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;strlen&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$pwd&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;))&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$key1&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;.=&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;substr&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$pwd&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;strlen&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$key&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;));&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;//&amp;nbsp;note&amp;nbsp;that&amp;nbsp;maximum&amp;nbsp;key&amp;nbsp;lenght&amp;nbsp;may&amp;nbsp;exce&lt;wbr /&gt;eded&lt;br&gt;//&amp;nbsp;Twofish::MAX_KEYLENGTH&lt;br&gt;//$key1=$pwd;&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$opts&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;nbsp;array(&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&apos;iv&apos;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$iv&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&apos;key&apos;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$key1&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&lt;br&gt;if&amp;nbsp;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$encr&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;stream_filter_append&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$f&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&quot;mcrypt.&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$alg&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;STREAM_FILTER_WRITE&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$opts&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;//&amp;nbsp;&amp;lt;==&amp;nbsp;активируем&amp;nbsp;поточный&amp;nbsp;фильтр-шифров&lt;wbr /&gt;альщик&lt;br&gt;//stream_filter_append($f,&amp;nbsp;&apos;convert.base&lt;wbr /&gt;64-encode&apos;);&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;fwrite&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$f&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&apos;&amp;lt;?xml&amp;nbsp;version=&quot;1.0&quot;&amp;nbsp;encoding=&quot;UTF-8&quot;?&amp;gt;&apos;&lt;wbr /&gt;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&quot;\n&quot;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;//&amp;nbsp;и&amp;nbsp;понеслось...&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;…&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/code&gt;Для того что бы это работало, разумеется нужна поддержка соответствующего фильтра mcrypt.* в PHP. Проверить это можно с помощью функции phpinfo().&lt;br /&gt;&lt;br /&gt;На стороне клиента шифрование индивидуального пароля для авторизации и формирование запроса происходит так:&lt;pre&gt;QByteArray Dialog_Settings&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;encrypt&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;const&lt;/font&gt; QString&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;&amp;amp;&lt;/font&gt;&lt;/b&gt; plain_str&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)
{&lt;/font&gt;&lt;/b&gt;
    byte iv&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;[&lt;/font&gt;&lt;/b&gt; CryptoPP&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;Twofish&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;BLOCKSIZE&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; ];&lt;/font&gt;&lt;/b&gt;
    memset&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;iv&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#999900&quot;&gt;0&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;sizeof&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;iv&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;));&lt;/font&gt;&lt;/b&gt;

    CryptoPP&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;SecByteBlock keyblock&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt; CryptoPP&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;Twofish&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;DEFAULT_KEYLENGTH&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; );&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;

    const&lt;/font&gt; QByteArray iva&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt; get_iv&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;();&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;
    // assert iva.size()==BLOCKSIZE()==16
&lt;/font&gt;&lt;/i&gt;&lt;font color=&quot;#FF0000&quot;&gt;    for&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF6633&quot;&gt;int&lt;/font&gt; i&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;=&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#999900&quot;&gt;0&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt; i&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;&amp;lt;&lt;/font&gt;&lt;/b&gt;CryptoPP&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;Twofish&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;BLOCKSIZE&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt; i&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;++)&lt;/font&gt;&lt;/b&gt; iv&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;[&lt;/font&gt;&lt;/b&gt;i&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;]=&lt;/font&gt;&lt;/b&gt;iva&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;[&lt;/font&gt;&lt;/b&gt;i&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;];&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;

    const&lt;/font&gt; QString k&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt; get_key&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;();&lt;/font&gt;&lt;/b&gt;
    qDebug&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;() &amp;lt;&amp;lt;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt; &quot;key=&quot;&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; &amp;lt;&amp;lt;&lt;/font&gt;&lt;/b&gt; k&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;
    keyblock&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;.&lt;/font&gt;&lt;/b&gt;Assign&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(
        (&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;const&lt;/font&gt;&lt;font color=&quot;#FF6633&quot;&gt; unsigned char&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;*)&lt;/font&gt;&lt;/b&gt;
        QByteArray&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;fromHex&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;k&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;.&lt;/font&gt;&lt;/b&gt;toLatin1&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;()).&lt;/font&gt;&lt;/b&gt;data&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(),&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt; // k.toStdString().c_str(),
&lt;/font&gt;&lt;/i&gt;        k&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;.&lt;/font&gt;&lt;/b&gt;toStdString&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;().&lt;/font&gt;&lt;/b&gt;length&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;()/&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#999900&quot;&gt;2&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;
    );&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;

    try&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;
    {&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;
        const&lt;/font&gt; std&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;string plain&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt; plain_str&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;.&lt;/font&gt;&lt;/b&gt;toStdString&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;();&lt;/font&gt;&lt;/b&gt;
        std&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;string cipher&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;

        CryptoPP&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;CBC_Mode&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;&amp;lt;&lt;/font&gt;&lt;/b&gt; CryptoPP&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;Twofish&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; &amp;gt;::&lt;/font&gt;&lt;/b&gt;Encryption e&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;
            keyblock&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; keyblock&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;.&lt;/font&gt;&lt;/b&gt;size&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(),&lt;/font&gt;&lt;/b&gt; iv&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; );&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;

        // The StreamTransformationFilter adds padding
        //  as required. ECB and CBC Mode must be padded
        //  to the block size of the cipher.
&lt;/font&gt;&lt;/i&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;        {&lt;/font&gt;&lt;/b&gt;
            CryptoPP&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;StringSource ss&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt; plain&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#000000&quot;&gt; true&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;
                new&lt;/font&gt; CryptoPP&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;StreamTransformationFilter&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;
                    e&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;
                    new&lt;/font&gt; CryptoPP&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;StringSink&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt; cipher&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; )
                )&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt; // StreamTransformationFilter
&lt;/font&gt;&lt;/i&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;            );&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt; // StringSource
&lt;/font&gt;&lt;/i&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;        }&lt;/font&gt;&lt;/b&gt;

        qDebug&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;() &amp;lt;&amp;lt;&lt;/font&gt;&lt;/b&gt; plain_str&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; &amp;lt;&amp;lt;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt; &quot;encryped. size=&quot;&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; &amp;lt;&amp;lt;&lt;/font&gt;&lt;/b&gt; cipher&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;.&lt;/font&gt;&lt;/b&gt;length&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;();&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;

        return&lt;/font&gt; QByteArray&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt; cipher&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;.&lt;/font&gt;&lt;/b&gt;c_str&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(),&lt;/font&gt;&lt;/b&gt; cipher&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;.&lt;/font&gt;&lt;/b&gt;length&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;() );
    }&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;
    catch&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt; const&lt;/font&gt; CryptoPP&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;Exception&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;&amp;amp;&lt;/font&gt;&lt;/b&gt; e&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; )
    {&lt;/font&gt;&lt;/b&gt;
        qDebug&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;() &amp;lt;&amp;lt;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt; &quot;Error encryption: &quot;&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; &amp;lt;&amp;lt;&lt;/font&gt;&lt;/b&gt; e&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;.&lt;/font&gt;&lt;/b&gt;what&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;() &amp;lt;&amp;lt;&lt;/font&gt;&lt;/b&gt; endl&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;

        return&lt;/font&gt; QByteArray&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;();
    }
}
..........&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF6633&quot;&gt;

            bool&lt;/font&gt; ok&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#000000&quot;&gt; false&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;
            QString p&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt; QInputDialog&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;getText&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;
                    this&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt; // NULL, // this
&lt;/font&gt;&lt;/i&gt;                    tr&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt;&quot;Password&quot;&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;),&lt;/font&gt;&lt;/b&gt;
                    get_username&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;().&lt;/font&gt;&lt;/b&gt;isEmpty&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;()?&lt;/font&gt;&lt;/b&gt;
                        tr&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt;&quot;Enter user passord&quot;&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;):&lt;/font&gt;&lt;/b&gt;
                        tr&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt;&quot;Enter password for %1&quot;&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;).&lt;/font&gt;&lt;/b&gt;arg&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;
                                QString&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt;&quot;&amp;lt;b&amp;gt;&quot;&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)+&lt;/font&gt;&lt;/b&gt;get_username&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;()+&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt;&quot;&amp;lt;/b&amp;gt;&quot;&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;),&lt;/font&gt;&lt;/b&gt;
                    QLineEdit&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;Password&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt;
                    v&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,
                    &amp;amp;&lt;/font&gt;&lt;/b&gt;ok&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt;
                    Qt&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;Window&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; |&lt;/font&gt;&lt;/b&gt; Qt&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;WindowStaysOnTopHint&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt; // Qt::WType_TopLevel // obsolete
&lt;/font&gt;&lt;/i&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;            );&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;
            if&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;ok&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)
            {&lt;/font&gt;&lt;/b&gt;
                m_encrypted&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt; encrypt&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;p&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;);
..........&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;

    const&lt;/font&gt; QString surl&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt; baseurl&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;()+&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt;&quot;/xml.php?user=&quot;&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;+&lt;/font&gt;&lt;/b&gt;user&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;

    QUrl url&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt; surl&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; );&lt;/font&gt;&lt;/b&gt;

    QUrl postData&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;
    foreach&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;const&lt;/font&gt; RequestItem&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;&amp;amp;&lt;/font&gt;&lt;/b&gt; wh&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; hr&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;.&lt;/font&gt;&lt;/b&gt;reqrec&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;.&lt;/font&gt;&lt;/b&gt;where&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;())
    {&lt;/font&gt;&lt;/b&gt;
        postData&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;.&lt;/font&gt;&lt;/b&gt;addQueryItem&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt;&quot;where[]&quot;&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; wh&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;.&lt;/font&gt;&lt;/b&gt;where&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;());
    }&lt;/font&gt;&lt;/b&gt;
    foreach&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;const&lt;/font&gt; QString&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;&amp;amp;&lt;/font&gt;&lt;/b&gt; col&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; m_pTableWidget&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;m_hidden&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;[&lt;/font&gt;&lt;/b&gt;hr&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;.&lt;/font&gt;&lt;/b&gt;table&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;])
    {&lt;/font&gt;&lt;/b&gt;
        postData&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;.&lt;/font&gt;&lt;/b&gt;addQueryItem&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt;&quot;skip[]&quot;&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; col&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;);&lt;/font&gt;&lt;/b&gt;
        qDebug&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;() &amp;lt;&amp;lt;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt; &quot;at table&quot;&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; &amp;lt;&amp;lt;&lt;/font&gt;&lt;/b&gt; hr&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;.&lt;/font&gt;&lt;/b&gt;table&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; &amp;lt;&amp;lt;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt; &quot; skipped &quot;&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; &amp;lt;&amp;lt;&lt;/font&gt;&lt;/b&gt; col&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;
    }&lt;/font&gt;&lt;/b&gt;
    qDebug&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;() &amp;lt;&amp;lt;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt; &quot;sending password...&quot;&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;
    qDebug&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;() &amp;lt;&amp;lt;&lt;/font&gt;&lt;/b&gt; m_pSettings&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;get_enc&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;().&lt;/font&gt;&lt;/b&gt;toHex&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;();&lt;/font&gt;&lt;/b&gt;
    postData&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;.&lt;/font&gt;&lt;/b&gt;addQueryItem&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt;&quot;password&quot;&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; m_pSettings&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;get_enc&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;().&lt;/font&gt;&lt;/b&gt;toHex&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;());&lt;/font&gt;&lt;/b&gt;  &lt;i&gt;// &lt;font color=&quot;red&quot;&gt;&amp;larr; m_pSettings-&amp;gt;m_encrypted&lt;/font&gt;&lt;/i&gt;

    QNetworkRequest request&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;url&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;);&lt;/font&gt;&lt;/b&gt;
    request&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;.&lt;/font&gt;&lt;/b&gt;setHeader&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;QNetworkRequest&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;ContentTypeHeader&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt; &quot;application/x-www-form-urlencoded&quot;&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;);&lt;/font&gt;&lt;/b&gt;
&lt;/pre&gt;так как шифрование происходит блоками, нужно что бы входная информация была дополнена до размера кратного длине блока («padding»). Для этого служит класс StreamTransformationFilter, дополнение происходит нулями. Кстати, поточный фильтр mcrypt.TwoFish в PHP тоже для этого использует нулевые байты (и это вроде нигде не написано). Т.к. мы передаём XML, т. е. plain-текст, в котором нет нулевых байт, мы легко можем удалить их с конца (см «де-padding» в конце кода метода Decrypter::readData ниже).&lt;br /&gt;&lt;br /&gt;Для поточной расшифровки я сделал класс-обёртку QIODevice под названием Decrypter.&lt;br /&gt;Для начала посмотрите код его заготовки -  класса-пустышки Decrypter0, который ничего не делает (можно использовать для отладки, отключив шифрование в PHP):&lt;pre&gt;&lt;font color=&quot;#990000&quot;&gt;class&lt;/font&gt; Decrypter0&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; :&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt; public&lt;/font&gt; QIODevice&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;
{&lt;/font&gt;&lt;/b&gt;
    Q_OBJECT&lt;font color=&quot;#990000&quot;&gt;

public&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;:&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;
    // Decrypter0() {}

    // my methods:
&lt;/font&gt;&lt;/i&gt;&lt;font color=&quot;#990000&quot;&gt;    virtual&lt;/font&gt;&lt;font color=&quot;#FF6633&quot;&gt; void&lt;/font&gt; unset&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;() {&lt;/font&gt;&lt;/b&gt; m_source&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;=&lt;/font&gt;&lt;/b&gt;NULL&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;; }&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt; // { setSource(NULL); }
&lt;/font&gt;&lt;/i&gt;&lt;font color=&quot;#000099&quot;&gt;
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored &quot;-Wunused-parameter&quot;
&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;    virtual&lt;/font&gt;&lt;font color=&quot;#FF6633&quot;&gt; bool&lt;/font&gt; setSource&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;QIODevice&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;*&lt;/font&gt;&lt;/b&gt; source&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; QWidget&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;*&lt;/font&gt;&lt;/b&gt; topwidget&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)
    {&lt;/font&gt;&lt;/b&gt; m_source&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;=&lt;/font&gt;&lt;/b&gt;source&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt; return&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#000000&quot;&gt; false&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;; }&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#000099&quot;&gt;
#pragma GCC diagnostic pop
&lt;/font&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;
    // QIODevice virtual;
&lt;/font&gt;&lt;/i&gt;&lt;font color=&quot;#990000&quot;&gt;    virtual&lt;/font&gt; qint64 bytesAvailable&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; ()&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt; const&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;
    {&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt; return&lt;/font&gt; m_source&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;==&lt;/font&gt;&lt;/b&gt;NULL&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;?&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#999900&quot;&gt; 0&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;:&lt;/font&gt;&lt;/b&gt; m_source&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;bytesAvailable&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(); }&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;

    virtual&lt;/font&gt;&lt;font color=&quot;#FF6633&quot;&gt; bool&lt;/font&gt; atEnd&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;()&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt; const&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;
    {&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt; return&lt;/font&gt; m_source&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;==&lt;/font&gt;&lt;/b&gt;NULL&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;?&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#000000&quot;&gt; true&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;:&lt;/font&gt;&lt;/b&gt; m_source&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;atEnd&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(); }&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;

    virtual&lt;/font&gt; qint64 size&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;()&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt; const&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;
    {&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt; return&lt;/font&gt; m_source&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;==&lt;/font&gt;&lt;/b&gt;NULL&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;?&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#999900&quot;&gt; 0&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;:&lt;/font&gt;&lt;/b&gt; m_source&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;size&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(); }&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;

    virtual&lt;/font&gt;&lt;font color=&quot;#FF6633&quot;&gt; bool&lt;/font&gt; open&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;OpenMode mode&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)
    {&lt;/font&gt;&lt;/b&gt;   qDebug&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;() &amp;lt;&amp;lt;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt; &quot;open called&quot;&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;
        QIODevice&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;open&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;mode&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;);&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;
        if&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;m_source&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;==&lt;/font&gt;&lt;/b&gt;NULL&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt; return&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#000000&quot;&gt; false&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;
        return&lt;/font&gt; m_source&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;open&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;mode&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;);
    }&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;
    virtual&lt;/font&gt;&lt;font color=&quot;#FF6633&quot;&gt; void&lt;/font&gt; close&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;()
    {&lt;/font&gt;&lt;/b&gt; QIODevice&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;close&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;();&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt; if&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;m_source&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;!=&lt;/font&gt;&lt;/b&gt;NULL&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)&lt;/font&gt;&lt;/b&gt; m_source&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;close&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(); }&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;

    // ### Qt 5: pos() and seek() should not be virtual, and
    // ### seek() should call a virtual seekData() function.
&lt;/font&gt;&lt;/i&gt;&lt;font color=&quot;#990000&quot;&gt;    virtual&lt;/font&gt; qint64 pos&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;()&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt; const&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;
    {&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt; return&lt;/font&gt; m_source&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;==&lt;/font&gt;&lt;/b&gt;NULL&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;?&lt;/font&gt;&lt;/b&gt; qint64&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#999900&quot;&gt;0&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;):&lt;/font&gt;&lt;/b&gt; m_source&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;pos&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(); }&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;
    virtual&lt;/font&gt;&lt;font color=&quot;#FF6633&quot;&gt; bool&lt;/font&gt; seek&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;qint64 pos&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt; const&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;
    {&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt; return&lt;/font&gt; m_source&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;==&lt;/font&gt;&lt;/b&gt;NULL&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;?&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#000000&quot;&gt; false&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;:&lt;/font&gt;&lt;/b&gt; m_source&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;seek&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;pos&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;); }&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;
    virtual&lt;/font&gt;&lt;font color=&quot;#FF6633&quot;&gt; bool&lt;/font&gt; reset&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;()&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt; const&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;
    {&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt; return&lt;/font&gt; m_source&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;==&lt;/font&gt;&lt;/b&gt;NULL&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;?&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#000000&quot;&gt; false&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;:&lt;/font&gt;&lt;/b&gt; m_source&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;reset&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(); }&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;

    virtual&lt;/font&gt;&lt;font color=&quot;#FF6633&quot;&gt; bool&lt;/font&gt; canReadLine&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;()&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt; const&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;
    {&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt; return&lt;/font&gt; m_source&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;==&lt;/font&gt;&lt;/b&gt;NULL&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;?&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#000000&quot;&gt; false&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;:&lt;/font&gt;&lt;/b&gt; m_source&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;canReadLine&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(); }&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;

    virtual&lt;/font&gt;&lt;font color=&quot;#FF6633&quot;&gt; bool&lt;/font&gt; isSequential&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;()&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt; const&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; {&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt; return&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#000000&quot;&gt; true&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;; }&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;

    virtual&lt;/font&gt;&lt;font color=&quot;#FF6633&quot;&gt; bool&lt;/font&gt; waitForReadyRead&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF6633&quot;&gt; int&lt;/font&gt; msecs&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; )
    {&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt; return&lt;/font&gt; m_source&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;==&lt;/font&gt;&lt;/b&gt;NULL&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;?&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#000000&quot;&gt; false&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;:&lt;/font&gt;&lt;/b&gt; m_source&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;waitForReadyRead&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;msecs&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;); }&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;

protected&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;:&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;
    virtual&lt;/font&gt;&lt;font color=&quot;#FF6633&quot;&gt; void&lt;/font&gt; connectNotify&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt; const&lt;/font&gt;&lt;font color=&quot;#FF6633&quot;&gt; char&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; *&lt;/font&gt;&lt;/b&gt; signal&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; )
    {&lt;/font&gt;&lt;/b&gt;
        qDebug&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;() &amp;lt;&amp;lt;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt; &quot;Don&apos;t try to connect the signal to decriptor! &quot;&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;
                 &amp;lt;&amp;lt;&lt;/font&gt;&lt;/b&gt; QLatin1String&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;signal&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;);&lt;/font&gt;&lt;/b&gt;
        exit&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#999900&quot;&gt;109&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;);
    }&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;

    virtual&lt;/font&gt; qint64 readData&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF6633&quot;&gt;char&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; *&lt;/font&gt;&lt;/b&gt;data&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; qint64 maxlen&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)
    {&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt; return&lt;/font&gt; m_source&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;==&lt;/font&gt;&lt;/b&gt;NULL&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;?&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#999900&quot;&gt; 0&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;:&lt;/font&gt;&lt;/b&gt; m_source&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;read&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;data&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt;maxlen&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;); }&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;
    // read method is not virtual !
&lt;/font&gt;&lt;/i&gt;&lt;font color=&quot;#990000&quot;&gt;
    virtual&lt;/font&gt; qint64 readLineData&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF6633&quot;&gt;char&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; *,&lt;/font&gt;&lt;/b&gt; qint64&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)
    {&lt;/font&gt;&lt;/b&gt; exit&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#999900&quot;&gt;111&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;); }&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;

    virtual&lt;/font&gt; qint64 writeData&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;const&lt;/font&gt;&lt;font color=&quot;#FF6633&quot;&gt; char&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; *,&lt;/font&gt;&lt;/b&gt; qint64&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;) {&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt; return&lt;/font&gt;&lt;font color=&quot;#999900&quot;&gt; 0&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;; }&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt; // read-only
&lt;/font&gt;&lt;/i&gt;
    QIODevice&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;*&lt;/font&gt;&lt;/b&gt; m_source&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;
};&lt;/font&gt;&lt;/b&gt;
&lt;/pre&gt;А вот сам Decrypter:&lt;br /&gt;Описание:&lt;pre&gt;&lt;font color=&quot;#000099&quot;&gt;#pragma GCC diagnostic push
#pragma GCC diagnostic ignored &quot;-Wunused-parameter&quot;
#pragma GCC diagnostic ignored &quot;-Wunused-variable&quot;
#pragma GCC diagnostic ignored &quot;-Wtype-limits&quot;
#include &quot;cryptopp/cryptlib.h&quot;
#include &quot;cryptopp/twofish.h&quot;
#include &quot;cryptopp/modes.h&quot;
#pragma GCC diagnostic pop

#include &amp;lt;QIODevice&amp;gt;
&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;
class&lt;/font&gt; Decrypter&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; :&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt; public&lt;/font&gt; QIODevice&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;
{&lt;/font&gt;&lt;/b&gt;
    Q_OBJECT&lt;font color=&quot;#990000&quot;&gt;

public&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;:&lt;/font&gt;&lt;/b&gt;
    Decrypter&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;QIODevice&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;*&lt;/font&gt;&lt;/b&gt; source&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt; const&lt;/font&gt; Dialog_Settings&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;*&lt;/font&gt;&lt;/b&gt; settings&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;);&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;

    inline&lt;/font&gt; qint64 BLOCKSIZE&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;()&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt; const&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;

    virtual&lt;/font&gt; qint64 bytesAvailable&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;()&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt; const&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;

    virtual&lt;/font&gt;&lt;font color=&quot;#FF6633&quot;&gt; bool&lt;/font&gt; atEnd&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;()&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt; const&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; {&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt; return&lt;/font&gt; m_source&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;==&lt;/font&gt;&lt;/b&gt;NULL&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;?&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#000000&quot;&gt; true&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;:&lt;/font&gt;&lt;/b&gt; m_source&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;atEnd&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(); }&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF6633&quot;&gt;

    bool&lt;/font&gt; unencrypted&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;()  {&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt; return&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; !&lt;/font&gt;&lt;/b&gt;m_protected&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;; }&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt; // признак отсутствия шифрования
&lt;/font&gt;&lt;/i&gt;    size_t get_gc&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;()     {&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt; return&lt;/font&gt; m_gc&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;; }&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt; // только для отладки
&lt;/font&gt;&lt;/i&gt;&lt;font color=&quot;#990000&quot;&gt;
protected&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;:&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;
    virtual&lt;/font&gt; qint64 readData&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF6633&quot;&gt;char&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; *&lt;/font&gt;&lt;/b&gt;data&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; qint64 maxlen&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;);&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;
    virtual&lt;/font&gt; qint64 writeData&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;const&lt;/font&gt;&lt;font color=&quot;#FF6633&quot;&gt; char&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; *,&lt;/font&gt;&lt;/b&gt; qint64&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;) {&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt; return&lt;/font&gt;&lt;font color=&quot;#999900&quot;&gt; 0&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;; }&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt; //Этот класс read-only
&lt;/font&gt;&lt;/i&gt;
    QIODevice&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;*&lt;/font&gt;&lt;/b&gt; m_source&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF6633&quot;&gt;
    bool&lt;/font&gt;           m_first&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF6633&quot;&gt;
    bool&lt;/font&gt;           m_protected&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;

    size_t         m_gc&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;// globar data bytes counter; temporary/ debug - только для отладки
&lt;/font&gt;&lt;/i&gt;
    CryptoPP&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;CBC_Mode&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;&amp;lt;&lt;/font&gt;&lt;/b&gt; CryptoPP&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;Twofish&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; &amp;gt;::&lt;/font&gt;&lt;/b&gt;Decryption m_d&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt; // дешифратор
&lt;/font&gt;&lt;/i&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;};&lt;/font&gt;&lt;/b&gt;
&lt;/pre&gt;Имплементация:&lt;pre&gt;&lt;font color=&quot;#000099&quot;&gt;#include &quot;decrypter.h&quot;

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored &quot;-Wunused-parameter&quot;
#pragma GCC diagnostic ignored &quot;-Wunused-variable&quot;
#pragma GCC diagnostic ignored &quot;-Wtype-limits&quot;
#include &quot;cryptopp/filters.h&quot;    // StringSink
#include &quot;cryptopp/osrng.h&quot;      // AutoSeededRandomPool
&lt;/font&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;//#include &quot;cryptopp/hex.h&quot;      // HexEncoder
&lt;/font&gt;&lt;/i&gt;&lt;font color=&quot;#000099&quot;&gt;#include &quot;cryptopp/base64.h&quot;
#pragma GCC diagnostic pop

#include &amp;lt;string&amp;gt;
#include &amp;lt;iostream&amp;gt;

#include &quot;dialog_settings.h&quot;

#include &amp;lt;QDebug&amp;gt;
&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;

using namespace&lt;/font&gt; CryptoPP&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;

Decrypter&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;Decrypter&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;QIODevice&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;*&lt;/font&gt;&lt;/b&gt; source&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt; const&lt;/font&gt; Dialog_Settings&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;*&lt;/font&gt;&lt;/b&gt; settings&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)
    :&lt;/font&gt;&lt;/b&gt; m_source&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;source&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)
    ,&lt;/font&gt;&lt;/b&gt; m_first&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#000000&quot;&gt;true&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)
    ,&lt;/font&gt;&lt;/b&gt; m_protected&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#000000&quot;&gt;false&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;    // Обозначает, что принимаются/приняты шифрованные данные
&lt;/font&gt;&lt;/i&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;    ,&lt;/font&gt;&lt;/b&gt; m_gc&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#999900&quot;&gt;0&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)
{&lt;/font&gt;&lt;/b&gt;
    m_first&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#000000&quot;&gt; true&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;
    m_protected&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#000000&quot;&gt; false&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;

    byte iv&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;[&lt;/font&gt;&lt;/b&gt; BLOCKSIZE&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;() ];&lt;/font&gt;&lt;/b&gt;
    memset&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;iv&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#999900&quot;&gt;0&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;sizeof&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;iv&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;));&lt;/font&gt;&lt;/b&gt;

    SecByteBlock keyblock&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt; Twofish&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;DEFAULT_KEYLENGTH&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; );&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;

    if&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;settings&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;!=&lt;/font&gt;&lt;/b&gt;NULL&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)
    {&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;
        const&lt;/font&gt; QByteArray iva&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt; settings&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;get_iv&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;();&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt; // initialization vector
        // assert iva.size()==BLOCKSIZE()==16
&lt;/font&gt;&lt;/i&gt;&lt;font color=&quot;#FF0000&quot;&gt;        for&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF6633&quot;&gt;int&lt;/font&gt; i&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;=&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#999900&quot;&gt;0&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt; i&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;&amp;lt;&lt;/font&gt;&lt;/b&gt;BLOCKSIZE&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;();&lt;/font&gt;&lt;/b&gt; i&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;++)&lt;/font&gt;&lt;/b&gt; iv&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;[&lt;/font&gt;&lt;/b&gt;i&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;]=&lt;/font&gt;&lt;/b&gt;iva&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;[&lt;/font&gt;&lt;/b&gt;i&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;];&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;

        // формирование рабочего ключа
&lt;/font&gt;&lt;/i&gt;        QByteArray kk&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt; QByteArray&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;fromHex&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;settings&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;get_key&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;().&lt;/font&gt;&lt;/b&gt;toLatin1&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;());&lt;/font&gt;&lt;/b&gt;
        QByteArray kp&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt; QByteArray&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;fromHex&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;settings&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;get_pwd&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;().&lt;/font&gt;&lt;/b&gt;toLatin1&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;());&lt;/font&gt;&lt;/b&gt;
        QByteArray k&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt; // Keyblock is to compose from common secret key and user password
&lt;/font&gt;&lt;/i&gt;&lt;font color=&quot;#FF0000&quot;&gt;        for&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF6633&quot;&gt;int&lt;/font&gt; i&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;=&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#999900&quot;&gt;0&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt; i&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;&amp;lt;&lt;/font&gt;&lt;/b&gt;kk&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;.&lt;/font&gt;&lt;/b&gt;size&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;() ||&lt;/font&gt;&lt;/b&gt; i&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;&amp;lt;&lt;/font&gt;&lt;/b&gt;kp&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;.&lt;/font&gt;&lt;/b&gt;size&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;();&lt;/font&gt;&lt;/b&gt; i&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;++)
        {&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;
            if&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;i&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;&amp;lt;&lt;/font&gt;&lt;/b&gt;kk&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;.&lt;/font&gt;&lt;/b&gt;size&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;())&lt;/font&gt;&lt;/b&gt; k&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;.&lt;/font&gt;&lt;/b&gt;push_back&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt; kk&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;[&lt;/font&gt;&lt;/b&gt;i&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;] );&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;
            if&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;i&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;&amp;lt;&lt;/font&gt;&lt;/b&gt;kp&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;.&lt;/font&gt;&lt;/b&gt;size&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;())&lt;/font&gt;&lt;/b&gt; k&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;.&lt;/font&gt;&lt;/b&gt;push_back&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt; kp&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;[&lt;/font&gt;&lt;/b&gt;i&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;] );&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;
            if&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;k&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;.&lt;/font&gt;&lt;/b&gt;size&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;()&amp;gt;=&lt;/font&gt;&lt;/b&gt;Twofish&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;MAX_KEYLENGTH&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;
                break&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;
        }&lt;/font&gt;&lt;/b&gt;
        keyblock&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;.&lt;/font&gt;&lt;/b&gt;Assign&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(
            (&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;const&lt;/font&gt;&lt;font color=&quot;#FF6633&quot;&gt; unsigned char&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;*)&lt;/font&gt;&lt;/b&gt;
            k&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;.&lt;/font&gt;&lt;/b&gt;data&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(),&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt; // k.toStdString().c_str(),
&lt;/font&gt;&lt;/i&gt;            k&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;.&lt;/font&gt;&lt;/b&gt;size&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;()
        );
    }&lt;/font&gt;&lt;/b&gt;

    m_d&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;.&lt;/font&gt;&lt;/b&gt;SetKeyWithIV&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt; keyblock&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; keyblock&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;.&lt;/font&gt;&lt;/b&gt;size&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(),&lt;/font&gt;&lt;/b&gt; iv&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; );&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;
    // m_d=new CryptoPP::CBC_Mode&amp;lt; CryptoPP::Twofish &amp;gt;::Decryption(
    //  keyblock, keyblock.size(), iv );
&lt;/font&gt;&lt;/i&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;}&lt;/font&gt;&lt;/b&gt;

qint64 Decrypter&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;BLOCKSIZE&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;()&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt; const&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;
{&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;
    return&lt;/font&gt; Twofish&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;BLOCKSIZE&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;
}&lt;/font&gt;&lt;/b&gt;

qint64 Decrypter&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;bytesAvailable&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;()&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt; const&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;
{&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;
    if&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;m_source&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;==&lt;/font&gt;&lt;/b&gt;NULL&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt; return&lt;/font&gt;&lt;font color=&quot;#999900&quot;&gt; 0&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;
    return&lt;/font&gt; m_protected&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;?&lt;/font&gt;&lt;/b&gt;
                BLOCKSIZE&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;()*(&lt;/font&gt;&lt;/b&gt;qint64&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)(&lt;/font&gt;&lt;/b&gt; m_source&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;bytesAvailable&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;() /&lt;/font&gt;&lt;/b&gt; BLOCKSIZE&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;() ) :&lt;/font&gt;&lt;/b&gt;
                m_source&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;bytesAvailable&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;();&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;
    //return m_source-&amp;gt;bytesAvailable(); // &amp;lt;-- так не работает
&lt;/font&gt;&lt;/i&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;}&lt;/font&gt;&lt;/b&gt;

qint64 Decrypter&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;readData&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF6633&quot;&gt;char&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; *&lt;/font&gt;&lt;/b&gt;data&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; qint64 maxlen&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)
{&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;
    //qDebug() &amp;lt;&amp;lt; &quot;Decrypter::m_source=&quot; &amp;lt;&amp;lt; m_source;
&lt;/font&gt;&lt;/i&gt;&lt;font color=&quot;#FF0000&quot;&gt;    if&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;m_source&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;==&lt;/font&gt;&lt;/b&gt;NULL&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt; return&lt;/font&gt;&lt;font color=&quot;#999900&quot;&gt; 0&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;

    //qDebug() &amp;lt;&amp;lt; &quot;Decrypter::m_first=&quot; &amp;lt;&amp;lt; m_first;
&lt;/font&gt;&lt;/i&gt;&lt;font color=&quot;#FF0000&quot;&gt;    if&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;m_first&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)
    {&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;
        // выполняется только при приёме первого байта
        // - проверка признака шифровки
&lt;/font&gt;&lt;/i&gt;&lt;font color=&quot;#990000&quot;&gt;        const&lt;/font&gt; QByteArray test&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;( (&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;const&lt;/font&gt; QByteArray&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;&amp;amp;)&lt;/font&gt;&lt;/b&gt; m_source&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;peek&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#999900&quot;&gt;1&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;) );&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;
        if&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;test&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;.&lt;/font&gt;&lt;/b&gt;size&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;()==&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#999900&quot;&gt;0&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;
            return&lt;/font&gt;&lt;font color=&quot;#999900&quot;&gt; 0&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;
        m_protected&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; = (&lt;/font&gt;&lt;/b&gt;test&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;.&lt;/font&gt;&lt;/b&gt;size&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;()==&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#999900&quot;&gt;1&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; &amp;amp;&amp;amp;&lt;/font&gt;&lt;/b&gt; test&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;[&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#999900&quot;&gt;0&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;]==&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#999900&quot;&gt;0&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;);&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt; // передача зашифрована?
&lt;/font&gt;&lt;/i&gt;        qDebug&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;() &amp;lt;&amp;lt;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt; &quot;Data stream:&quot;&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; &amp;lt;&amp;lt; (&lt;/font&gt;&lt;/b&gt;m_protected&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;?&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt;&quot;CRYPTED&quot;&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;:&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt;&quot;OPEN&quot;&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;);&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;
        if&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;m_protected&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)&lt;/font&gt;&lt;/b&gt; m_source&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;seek&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#999900&quot;&gt;32&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;);&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt; // skip first 32 bytes (&quot;header&quot;)
&lt;/font&gt;&lt;/i&gt;        m_first&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#000000&quot;&gt; false&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;
    }&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;

    if&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (!&lt;/font&gt;&lt;/b&gt;m_protected&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;   // Если передача не шифруется просто перекладываем данные
&lt;/font&gt;&lt;/i&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;    {&lt;/font&gt;&lt;/b&gt;
        qint64 r&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt; m_source&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;read&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;data&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt;maxlen&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;);&lt;/font&gt;&lt;/b&gt;
        m_gc&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;+=&lt;/font&gt;&lt;/b&gt;r&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;
        return&lt;/font&gt; r&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;
    }&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;

    // qint64 len = BLOCKSIZE()*(qint64)( m_source-&amp;gt;bytesAvailable() / BLOCKSIZE() );
&lt;/font&gt;&lt;/i&gt;    qint64 len&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt; bytesAvailable&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;();&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;
    // qDebug() &amp;lt;&amp;lt; &quot;LEN=&quot; &amp;lt;&amp;lt; len;
&lt;/font&gt;&lt;/i&gt;&lt;font color=&quot;#FF0000&quot;&gt;
    if&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;len&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;&amp;gt;&lt;/font&gt;&lt;/b&gt;maxlen&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)&lt;/font&gt;&lt;/b&gt; len&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt; maxlen&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;
    qint64 len1&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt; BLOCKSIZE&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;()*((&lt;/font&gt;&lt;/b&gt;qint64&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)&lt;/font&gt;&lt;/b&gt;len&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;/&lt;/font&gt;&lt;/b&gt;BLOCKSIZE&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;());&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;
    // assign(len1&amp;lt;=maxlen)
&lt;/font&gt;&lt;/i&gt;    qint64 s&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt; m_source&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;read&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;data&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; len1&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;);&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;
    // assign(s==len1)
    // s - размер прочитанных данных до расшифровки
&lt;/font&gt;&lt;/i&gt;    size_t s2&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#999900&quot;&gt; 0&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt; // s2 - размер данных на выходе
&lt;/font&gt;&lt;/i&gt;&lt;font color=&quot;#FF0000&quot;&gt;    try&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; {&lt;/font&gt;&lt;/b&gt;
        ArraySink&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; *&lt;/font&gt;&lt;/b&gt;a&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt; new&lt;/font&gt; ArraySink&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;( (&lt;/font&gt;&lt;/b&gt;byte&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;*)&lt;/font&gt;&lt;/b&gt;data&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;, (&lt;/font&gt;&lt;/b&gt;size_t&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)&lt;/font&gt;&lt;/b&gt;s&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; );&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt; // объект-посредник для приёма данных в массив data
&lt;/font&gt;&lt;/i&gt;        StringSource ss&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;( (&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;const&lt;/font&gt; byte&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;*)&lt;/font&gt;&lt;/b&gt;data&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;, (&lt;/font&gt;&lt;/b&gt;size_t&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)&lt;/font&gt;&lt;/b&gt;s&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#000000&quot;&gt; true&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;
            new&lt;/font&gt; StreamTransformationFilter&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;
                m_d&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt; // это объект CryptoPP::CBC_Mode&amp;lt; CryptoPP::Twofish &amp;gt;::Decryption
&lt;/font&gt;&lt;/i&gt;                a&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt;
                StreamTransformationFilter&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;ZEROS_PADDING&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt; //StreamTransformationFilter::NO_PADDING
&lt;/font&gt;&lt;/i&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;            )&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt; // StreamTransformationFilter
&lt;/font&gt;&lt;/i&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;        );&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt; // Source
&lt;/font&gt;&lt;/i&gt;        s2&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt; a&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;TotalPutLength&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;();&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt; // получаем размер данных на выходе
&lt;/font&gt;&lt;/i&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;    }&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;
    catch&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt; CryptoPP&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;Exception&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;&amp;amp;&lt;/font&gt;&lt;/b&gt; e&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; )
    {&lt;/font&gt;&lt;/b&gt;
        std&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;cerr&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; &amp;lt;&amp;lt;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt; &quot;Caught Crypto++ Exception: &quot;&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; &amp;lt;&amp;lt;&lt;/font&gt;&lt;/b&gt; e&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;.&lt;/font&gt;&lt;/b&gt;what&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;() &amp;lt;&amp;lt;&lt;/font&gt;&lt;/b&gt; std&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;endl&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;
    }&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;
    for&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF6633&quot;&gt;int&lt;/font&gt; j&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;=&lt;/font&gt;&lt;/b&gt;s&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#999900&quot;&gt;1&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt; j&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;&amp;gt;=&lt;/font&gt;&lt;/b&gt;s&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&lt;/font&gt;&lt;/b&gt;BLOCKSIZE&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;() &amp;amp;&amp;amp;&lt;/font&gt;&lt;/b&gt; j&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;&amp;gt;=&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#999900&quot;&gt;0&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt; j&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;--)&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt; // де-padding
&lt;/font&gt;&lt;/i&gt;&lt;font color=&quot;#FF0000&quot;&gt;        if&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;data&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;[&lt;/font&gt;&lt;/b&gt;j&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;]==&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#999900&quot;&gt;0&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)&lt;/font&gt;&lt;/b&gt; data&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;[&lt;/font&gt;&lt;/b&gt;j&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;]=&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt;&apos; &apos;&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;               // нулевые байты в конце заменяем пробелами
&lt;/font&gt;&lt;/i&gt;&lt;font color=&quot;#FF0000&quot;&gt;        else break&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;

    //qDebug() &amp;lt;&amp;lt; &quot;s2=&quot;&amp;lt;&amp;lt; s2 &amp;lt;&amp;lt; &quot;rest0=&quot;&amp;lt;&amp;lt; (len-s) &amp;lt;&amp;lt; &quot;rest=&quot;&amp;lt;&amp;lt; m_source-&amp;gt;bytesAvailable();
&lt;/font&gt;&lt;/i&gt;    m_gc&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;+=&lt;/font&gt;&lt;/b&gt;s2&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;
    //qDebug() &amp;lt;&amp;lt; &quot;global.counter=&quot; &amp;lt;&amp;lt; m_gc; // чисто для проверки
&lt;/font&gt;&lt;/i&gt;&lt;font color=&quot;#FF0000&quot;&gt;    return&lt;/font&gt; s2&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;
}&lt;/font&gt;&lt;/b&gt;&lt;/pre&gt;&lt;br /&gt;&lt;i&gt;см. продолжение - &lt;a href=&quot;http://lj.rossia.org/users/shestero/139467.html&quot;&gt;Часть 2&lt;/a&gt;.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align:left&quot;&gt;&lt;font size=&quot;-2&quot;&gt;&lt;a href=&quot;http://lj.rossia.org/users/shestero/139630.html&quot;&gt;&lt;img src=&quot;http://lj.rossia.org/numreplies/shestero/139630&quot; border=0 width=20 height=14  alt=&quot;number of comments&quot; style=&quot;border:0px;&quot; /&gt; &lt;strong&gt;Comments&lt;/strong&gt;&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;</description>
  <comments>http://lj.rossia.org/users/shestero/139630.html</comments>
  <category>c++</category>
  <category>crypto++</category>
  <category>cryptography</category>
  <category>it</category>
  <category>mcrypt</category>
  <category>php</category>
  <category>qt</category>
  <category>twofish</category>
  <lj:mood>satisfied</lj:mood>
</item>
<item>
  <guid isPermaLink='true'>http://lj.rossia.org/users/shestero/139467.html</guid>
  <pubDate>Sun, 20 Apr 2014 20:00:41 GMT</pubDate>
  <title>Шифровка  потока информации PHP-HTTP-Qt. Часть 2</title>
  <link>http://lj.rossia.org/users/shestero/139467.html</link>
  <description>&lt;i&gt;...Это продолжение, начало см. &lt;a href=&quot;http://lj.rossia.org/users/shestero/139630.html&quot;&gt;Часть 1&lt;/a&gt;!&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Decrypter-объект m_decrypter логически &quot;вставляется&quot; между входным потоком QNetworkReply и приёмником QxmlInputSource :&lt;pre&gt;    connect&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;m_pManager&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; SIGNAL&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;finished&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;QNetworkReply&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;*)),&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;
            this&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; SLOT&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;onFinish&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;QNetworkReply&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;*)));&lt;/font&gt;&lt;/b&gt;

…
    m_reader&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt; new&lt;/font&gt; QXmlSimpleReader&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;
    // connect QXmlSimpleReader to handlers
&lt;/font&gt;&lt;/i&gt;    m_reader&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;setContentHandler&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;this&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;);&lt;/font&gt;&lt;/b&gt;
    m_reader&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;setErrorHandler&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;this&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;);&lt;/font&gt;&lt;/b&gt;

    QNetworkRequest request&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;url&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;);&lt;/font&gt;&lt;/b&gt;
    request&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;.&lt;/font&gt;&lt;/b&gt;setHeader&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;QNetworkRequest&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;ContentTypeHeader&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt; &quot;application/x-www-form-urlencoded&quot;&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;);&lt;/font&gt;&lt;/b&gt;

    m_first&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#000000&quot;&gt; true&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;
    m_timestart&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;.&lt;/font&gt;&lt;/b&gt;start&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;();&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt; // = QTime::currentTime();
&lt;/font&gt;&lt;/i&gt;    m_timestop&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;  =&lt;/font&gt;&lt;/b&gt; QTime&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;();&lt;/font&gt;&lt;/b&gt;
    m_reply&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt; m_pManager&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;post&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt; request&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; postData&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;().&lt;/font&gt;&lt;/b&gt;encodedQuery&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;() );&lt;/font&gt;&lt;/b&gt;
    qDebug&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;() &amp;lt;&amp;lt;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt; &quot;Got new m_reply=&quot;&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; &amp;lt;&amp;lt;&lt;/font&gt;&lt;/b&gt; m_reply&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;
    //m_reply-&amp;gt;setReadBufferSize(16*1024);
&lt;/font&gt;&lt;/i&gt;
&lt;b&gt;    m_decrypter&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt; new&lt;/font&gt; Decrypter&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;m_reply&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; m_pSettings&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;);&lt;/font&gt;&lt;/b&gt;
    m_xmlsource&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt; new&lt;/font&gt; QxmlInputSource&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;m_decrypter&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;);&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt; // [**]
&lt;/font&gt;&lt;/i&gt;&lt;/b&gt;
    connect&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;m_reply&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; SIGNAL&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;readyRead&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;()),&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt; this&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; SLOT&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;onReadyRead&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;()) );&lt;/font&gt;&lt;/b&gt;
    connect&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;m_reply&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; SIGNAL&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;downloadProgress&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;qint64&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; qint64&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)),&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;
            this&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt;  SLOT&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;onDownloadProgress&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;qint64&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; qint64&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)));&lt;/font&gt;&lt;/b&gt;&lt;/pre&gt;К сожалению, мне не удалось добиться того, что бы Decryptor работал в точности также как объект QNetworkReply; возможно причина в том, что он выдаёт информацию только 16-байтовыми порциями и не может в конце правильно оценить размер, но в handler-е SAX-парсера не запускался endDocument();&lt;br /&gt;Мне удалось тем не менее заставить это работать как надо дополнительно «стимулируя» Decryptor в обработчиках сигналов readyRead() и downloadProgress(qint64, qint64)&lt;br /&gt;(если не использовать шифрование и класть m_reply вместо m_decrypter в QxmlInputSource() это не требуется:&lt;pre&gt;&lt;font color=&quot;#FF6633&quot;&gt;
void&lt;/font&gt; WorkplaceTab&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;onReadyRead&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;()
{&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;
    if&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt; m_reader&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;==&lt;/font&gt;&lt;/b&gt;NULL&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; ||&lt;/font&gt;&lt;/b&gt; m_xmlsource&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;==&lt;/font&gt;&lt;/b&gt;NULL&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; )
    {&lt;/font&gt;&lt;/b&gt;
        qDebug&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;() &amp;lt;&amp;lt;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt; &quot;WorkplaceTab::onReadyRead() - warning&quot;&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;
        return&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;
    }&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;

    if&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;m_first&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)
    {&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;
        // выполняется один раз - при приёме превой порции данных
&lt;/font&gt;&lt;/i&gt;        qDebug&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;() &amp;lt;&amp;lt;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt; &quot;m_reader-&amp;gt;parse(m_xmlsource, true);&quot;&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;
        if&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (!&lt;/font&gt;&lt;/b&gt;m_reader&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;parse&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;m_xmlsource&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#000000&quot;&gt; true&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;))&lt;/font&gt;&lt;/b&gt;
            to_idle_state&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;();&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt; // прекращение режима приёма
&lt;/font&gt;&lt;/i&gt;        m_first&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#000000&quot;&gt; false&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;
    }&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF6633&quot;&gt;

    long&lt;/font&gt; watchdog&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#999900&quot;&gt; 100&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;
    while&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt; m_decrypter&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;!=&lt;/font&gt;&lt;/b&gt;NULL&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; &amp;amp;&amp;amp;&lt;/font&gt;&lt;/b&gt; m_decrypter&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;bytesAvailable&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;()&amp;gt;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#999900&quot;&gt;0&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; )
    {&lt;/font&gt;&lt;/b&gt;
        m_xmlsource&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;fetchData&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;();&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;
        if&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (!&lt;/font&gt;&lt;/b&gt;m_reader&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;parseContinue&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;())&lt;/font&gt;&lt;/b&gt;
            to_idle_state&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;();&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;    // прекращение режима приёма
&lt;/font&gt;&lt;/i&gt;&lt;font color=&quot;#FF0000&quot;&gt;
        if&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;watchdog&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;--&amp;lt;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#999900&quot;&gt;0&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;
            break&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;
    }
}&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF6633&quot;&gt;

void&lt;/font&gt; WorkplaceTab&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;onDownloadProgress&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;qint64 bytesReceived&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; qint64 bytesTotal&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)
{&lt;/font&gt;&lt;/b&gt;
    logmessage&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt; tr&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt;&quot;%1 bytes and %2 rows loaded&quot;&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;).&lt;/font&gt;&lt;/b&gt;arg&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;bytesReceived&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;).&lt;/font&gt;&lt;/b&gt;arg&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;m_row&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;) );&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;

    if&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;bytesReceived&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;==&lt;/font&gt;&lt;/b&gt;bytesTotal&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)
    {&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;
        // выполняется один раз - после приёма последней порции данных
&lt;/font&gt;&lt;/i&gt;        qDebug&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;() &amp;lt;&amp;lt;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt; &quot;WorkplaceTab::onDownloadProgress LAST TIME&quot;&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;
        if&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;m_reader&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;==&lt;/font&gt;&lt;/b&gt;NULL&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; ||&lt;/font&gt;&lt;/b&gt; m_xmlsource&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;==&lt;/font&gt;&lt;/b&gt;NULL&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; ||&lt;/font&gt;&lt;/b&gt; m_reply&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;==&lt;/font&gt;&lt;/b&gt;NULL&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)
        {&lt;/font&gt;&lt;/b&gt;
            qDebug&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;() &amp;lt;&amp;lt;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt; &quot;Warning: m_reader==NULL or m_xmlsource==NULL or m_reply==NULL!&quot;&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;
            return&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;
        }&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF6633&quot;&gt;

        long&lt;/font&gt; watchdog&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;=&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#999900&quot;&gt;1000000&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF6633&quot;&gt;
        bool&lt;/font&gt; b&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;=&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#000000&quot;&gt;true&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;
        while&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;b&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; &amp;amp;&amp;amp;&lt;/font&gt;&lt;/b&gt; m_xmlsource&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;data&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;().&lt;/font&gt;&lt;/b&gt;length&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;()&amp;gt;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#999900&quot;&gt;0&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; &amp;amp;&amp;amp;--&lt;/font&gt;&lt;/b&gt;watchdog&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)&lt;/font&gt;&lt;/b&gt;
            b&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt; m_reader&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;parseContinue&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;();&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;

        if&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;b&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)
        {&lt;/font&gt;&lt;/b&gt;
            m_xmlsource&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;next&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;();&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;        // и ещё раз - вхолостую -
&lt;/font&gt;&lt;/i&gt;            m_reader&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;parseContinue&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;();&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;  // что бы вызвалось QXmlInputSource::EndOfDocument
&lt;/font&gt;&lt;/i&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;        }&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;
        /*
        if (m_row&amp;lt;=0) // TODO: проверка что QXmlInputSource::EndOfDocument не отработал
            to_idle_state(); // грубая остановка
        */&lt;/font&gt;&lt;/i&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;
    }
}&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;

// ?? иногда вызывается до завершения разборки XML! :-O
&lt;/font&gt;&lt;/i&gt;&lt;font color=&quot;#FF6633&quot;&gt;void&lt;/font&gt; WorkplaceTab&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;onFinish&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;QNetworkReply&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; *&lt;/font&gt;&lt;/b&gt;reply&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)
{&lt;/font&gt;&lt;/b&gt;
    qDebug&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;() &amp;lt;&amp;lt;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt; &quot;WorkplaceTab::onFinish&quot;&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;

    m_timestop&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;.&lt;/font&gt;&lt;/b&gt;start&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;();&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt; // = QTime::currentTime();
&lt;/font&gt;&lt;/i&gt;&lt;font color=&quot;#FF6633&quot;&gt;
    bool&lt;/font&gt; anew&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#000000&quot;&gt; false&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;

    // отсоединяем обработчики onReadyRead и onDownloadProgress
    //reply-&amp;gt;disconnect();
&lt;/font&gt;&lt;/i&gt;    disconnect&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;reply&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; SIGNAL&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;readyRead&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;()),&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt; this&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; SLOT&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;onReadyRead&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;()) );&lt;/font&gt;&lt;/b&gt;
    disconnect&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;reply&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; SIGNAL&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;downloadProgress&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;qint64&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; qint64&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)),&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;
            this&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt;  SLOT&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;onDownloadProgress&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;qint64&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; qint64&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)));
....&lt;/font&gt;&lt;/b&gt;&lt;/pre&gt;Может кто-то поможет с этим окончательно разобраться?&lt;br /&gt;На этом на сегодя всё... вот так … :-)&lt;br /&gt;Надеюсь вам было интересно!(?)&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align:left&quot;&gt;&lt;font size=&quot;-2&quot;&gt;&lt;a href=&quot;http://lj.rossia.org/users/shestero/139467.html&quot;&gt;&lt;img src=&quot;http://lj.rossia.org/numreplies/shestero/139467&quot; border=0 width=20 height=14  alt=&quot;number of comments&quot; style=&quot;border:0px;&quot; /&gt; &lt;strong&gt;Comments&lt;/strong&gt;&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;</description>
  <comments>http://lj.rossia.org/users/shestero/139467.html</comments>
  <category>c++</category>
  <category>crypto++</category>
  <category>cryptography</category>
  <category>it</category>
  <category>mcrypt</category>
  <category>php</category>
  <category>qt</category>
  <category>twofish</category>
  <lj:mood>satisfied</lj:mood>
</item>
<item>
  <guid isPermaLink='true'>http://lj.rossia.org/users/shestero/139036.html</guid>
  <pubDate>Fri, 18 Apr 2014 22:51:54 GMT</pubDate>
  <title>Qt: сокрытие вкладок в QTabWidget</title>
  <link>http://lj.rossia.org/users/shestero/139036.html</link>
  <description>В стандартном виджете для организации вкадок в Qt нет возможности сокрытия отдельных вкладок (show/hide). Интернете не нашёл решения – предлагают сложные пути: временно удалять вкладки или переделывать виджет.&lt;br /&gt;&lt;br /&gt;Кажется мне удалось найти простое решение, оно годится если вы не используйте «задисейбленные» («серые», «режим только-чтение») вкладки (disabled). Кстати, для сокрытых вкладок это и не имеет смысла.&lt;br /&gt;&lt;br /&gt;Идея в том, что бы ставить режим disabled вкладкам, которые надо скрыть, а для маскировки вкладок использовать приём задание стиля с нулевым размером вкладки. Причём при установке режима disabled виджет автоматически переключит активную вкладку.&lt;br /&gt;&lt;br /&gt;Нужный стиль устанавливается так:&lt;pre&gt;&lt;font color=&quot;#000099&quot;&gt;#include &quot;qtesttabwidget.h&quot;

#include &amp;lt;QTabBar&amp;gt;
&lt;/font&gt;
QTestTabWidget&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;QTestTabWidget&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;()&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt; // наследник QTabWidget
&lt;/font&gt;&lt;/i&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;{&lt;/font&gt;&lt;/b&gt;
    setStyleSheet&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;();
}&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF6633&quot;&gt;

void&lt;/font&gt; QTestTabWidget&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;setStyleSheet&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;()
{&lt;/font&gt;&lt;/b&gt;
    tabBar&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;()-&amp;gt;&lt;/font&gt;&lt;/b&gt;setStyleSheet&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt;
        &quot;QTabBar::tab:disabled { width: 0; height: 0; right: 1px; }&quot;&lt;/font&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt; //  ??? border-style: none; margin-left: 1px;
&lt;/font&gt;&lt;/i&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;    );
}&lt;/font&gt;&lt;/b&gt;
&lt;/pre&gt;У меня чуть-чуть кривовато выглядит последняя граница последней видимой вкладки, если она не активная и если скрыть самую последнюю. Вероятно тут можно как-то добиться идеального отображения и в этом случае поколдовав с полями, смещениями итд в стиле. Если кто разберётся с этим — пожалуйста, отправьте мне результат!&lt;br /&gt;Состояние «:disabled» вроде не документировано для QTabBar::tab, однако у меня в Qt 4.5.0 это работает, думаю, и в новых версиях тоже должно.&lt;br /&gt;&lt;br /&gt;Вот тестовая программа (код класса главного окна QMainWindow), которая динамически скрывает/показывает вкладки:&lt;pre&gt;&lt;font color=&quot;#000099&quot;&gt;#include &quot;mainwindow.h&quot;

#include &amp;lt;QCheckBox&amp;gt;
#include &amp;lt;QVBoxLayout&amp;gt;
#include &amp;lt;QHBoxLayout&amp;gt;

#include &amp;lt;QLabel&amp;gt;
#include &amp;lt;QTabBar&amp;gt;
&lt;/font&gt;

MainWindow&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;MainWindow&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;QWidget&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; *&lt;/font&gt;&lt;/b&gt;parent&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)
    :&lt;/font&gt;&lt;/b&gt; QMainWindow&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;parent&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)
{&lt;/font&gt;&lt;/b&gt;
    QWidget&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;*&lt;/font&gt;&lt;/b&gt; w&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt; new&lt;/font&gt; QWidget&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;this&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;);&lt;/font&gt;&lt;/b&gt;
    QVBoxLayout&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;*&lt;/font&gt;&lt;/b&gt; vl&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt; new&lt;/font&gt; QVBoxLayout&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt; w&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; );&lt;/font&gt;&lt;/b&gt;
    QHBoxLayout&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;*&lt;/font&gt;&lt;/b&gt; hl&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt; new&lt;/font&gt; QHBoxLayout&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;
    vl&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;addLayout&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt; hl&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; );&lt;/font&gt;&lt;/b&gt;
    vl&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;addWidget&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt; m_tabs&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt; new&lt;/font&gt; QTestTabWidget&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; );&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;

    for&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF6633&quot;&gt;int&lt;/font&gt; i&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;=&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#999900&quot;&gt;0&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt; i&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;&amp;lt;&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#999900&quot;&gt;3&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt; i&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;++)
    {&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;
        const&lt;/font&gt; QString num&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt; QString&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;number&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;i&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;+&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#999900&quot;&gt;1&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;);&lt;/font&gt;&lt;/b&gt;
        QCheckBox&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;*&lt;/font&gt;&lt;/b&gt; ch&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt; new&lt;/font&gt; QCheckBox&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt; QString&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt;&quot;Show tab#&quot;&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)+&lt;/font&gt;&lt;/b&gt;num&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; );&lt;/font&gt;&lt;/b&gt;
        ch&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;setChecked&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#000000&quot;&gt;true&lt;/font&gt;&lt;/b&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;);&lt;/font&gt;&lt;/b&gt;
        hl&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;addWidget&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;ch&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;);&lt;/font&gt;&lt;/b&gt;
        m_map&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;.&lt;/font&gt;&lt;/b&gt;insert&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt; ch&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; m_tabs&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;addTab&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;new&lt;/font&gt; QLabel&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt; QString&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt;&quot;Label &quot;&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)+&lt;/font&gt;&lt;/b&gt;num&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; ),&lt;/font&gt;&lt;/b&gt; QString&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#009900&quot;&gt;&quot;tab#&quot;&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)+&lt;/font&gt;&lt;/b&gt;num&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; ) );&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt;
        // ^ QMap&amp;lt;QCheckBox*,int&amp;gt; m_map;
&lt;/font&gt;&lt;/i&gt;        connect&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt; ch&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; SIGNAL&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;stateChanged&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF6633&quot;&gt;int&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)),&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt; this&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; SLOT&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;stateChanged&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF6633&quot;&gt;int&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;)) );
    }&lt;/font&gt;&lt;/b&gt;

    setCentralWidget&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt; w&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; );
}&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF6633&quot;&gt;

void&lt;/font&gt; MainWindow&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;stateChanged&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF6633&quot;&gt; int&lt;/font&gt; state&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; )
{&lt;/font&gt;&lt;/b&gt;
    QCheckBox&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; *&lt;/font&gt;&lt;/b&gt;p&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt; qobject_cast&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;&amp;lt;&lt;/font&gt;&lt;/b&gt;QCheckBox&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;*&amp;gt;(&lt;/font&gt;&lt;/b&gt; sender&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;() );&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;
    if&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; (&lt;/font&gt;&lt;/b&gt; p&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;==&lt;/font&gt;&lt;/b&gt;NULL&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;||!&lt;/font&gt;&lt;/b&gt;m_map&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;.&lt;/font&gt;&lt;/b&gt;contains&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;p&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;) )&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#FF0000&quot;&gt;
        return&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;;&lt;/font&gt;&lt;/b&gt;

    m_tabs&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;setTabEnabled&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt; m_map&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;[&lt;/font&gt;&lt;/b&gt;p&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;],&lt;/font&gt;&lt;/b&gt; state&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;!=&lt;/font&gt;&lt;/b&gt;Qt&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;Unchecked&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; );&lt;/font&gt;&lt;/b&gt;
    m_tabs&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;-&amp;gt;&lt;/font&gt;&lt;/b&gt;setStyleSheet&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;();
}&lt;/font&gt;&lt;/b&gt;
&lt;/pre&gt;&lt;br /&gt;PS Наткнулся на одну &quot;кривость&quot;: если использовать виджеты на вкладках (в моём случае это раскрывающийся список на том месте, где обычно кнопка закрытия вкладки):&lt;pre&gt;QComboBox&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; *&lt;/font&gt;&lt;/b&gt;ysel&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; =&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt; new&lt;/font&gt; YearInTabComboBox&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt; years&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt; );&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt; // наследник QComboBox
&lt;/font&gt;&lt;/i&gt;tabBar&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;()-&amp;gt;&lt;/font&gt;&lt;/b&gt;setTabButton&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;(&lt;/font&gt;&lt;/b&gt;num&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; QTabBar&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;::&lt;/font&gt;&lt;/b&gt;RightSide&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;,&lt;/font&gt;&lt;/b&gt; ysel&lt;b&gt;&lt;font color=&quot;#663300&quot;&gt;);&lt;/font&gt;&lt;/b&gt;&lt;i&gt;&lt;font color=&quot;#999999&quot;&gt; // установка виджета во вкладку num справа от текста&lt;/font&gt;&lt;/i&gt;&lt;/pre&gt; то при сокрытии вкладки этим методом эти виджеты у меня должным образом не скрываются и могут образовать &quot;стопку&quot; уложившись рядом. (С кнопками закрытия, наверное, будет то же самое). Впрочем, на сколько я представляю, во-первых, мало кто ставит виджеты во вкладки, а во-вторых это можно обойти, дополнительно скрывая и показывая такие виджеты на соответствующих вкладках обычным способом (методами show/hide).&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align:left&quot;&gt;&lt;font size=&quot;-2&quot;&gt;&lt;a href=&quot;http://lj.rossia.org/users/shestero/139036.html&quot;&gt;&lt;img src=&quot;http://lj.rossia.org/numreplies/shestero/139036&quot; border=0 width=20 height=14  alt=&quot;number of comments&quot; style=&quot;border:0px;&quot; /&gt; &lt;strong&gt;Comments&lt;/strong&gt;&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;</description>
  <comments>http://lj.rossia.org/users/shestero/139036.html</comments>
  <category>c++</category>
  <category>gui</category>
  <category>it</category>
  <category>qt</category>
  <category>qtabwidget</category>
  <lj:mood>satisfied</lj:mood>
</item>
<item>
  <guid isPermaLink='true'>http://lj.rossia.org/users/shestero/138917.html</guid>
  <pubDate>Thu, 17 Apr 2014 17:35:07 GMT</pubDate>
  <title>Размер медленной выборки и «последняя страница» (MySQL - PHP - браузер/клиент)</title>
  <link>http://lj.rossia.org/users/shestero/138917.html</link>
  <description>Рассмотрим простую страндартную задачу: данные из таблицы MySQL через PHP направляются в браузер (или иную программу-клиент). В браузере они отображаются в виде таблицы разбитой на «страницы» по 20, 50 или 100 записей на странице. То есть если записей много, пользователь видит только первые, скажем, двадцать, а ниже таблицы переключатель страниц: 1,2,3,..., последняя, называемый «paginator».&lt;br /&gt;&lt;br /&gt;Эта задача весьма «заезжанная» и в ней нет ничего сложного, если трудоёмкость выборки из СУБД не большая. В этом случае как правило скрипты PHP принимают аргументом номер показываемой «страницы» N (по умолчанию - N=1) и размер страницы M из фиксированномго множества(20,50,100, а по умолчанию, скажем, M=20) сначала делают запрос SELECT COUNT(*) …. из таблицы с условиями выборки. Полученый размер выборки T делят на M, получая количество страниц C=M/T (приводя до целого числа в большую сторону), проверяют что N&amp;lt;=C, затем делают выборку записей для текущей «страницы» с помощью ...LIMIT (N-1)*M,M &lt;br /&gt;Однако если таблица в MySQL очень большая полная выборка или подсчёт записей в выборке COUNT(*) может затянуться на продолжительное время. При этом, выдача полезных результатов в текущую страницу (особенно в первую) может происходить удовлетворительно быстро:&lt;br /&gt;При не-буверизированном чтении выборки из MySQL записи могут приходить, например, каждые несколько десятков миллисекунд. Таким образом первая «страница», может быть загружена за приемлемое время порядка секунды, но если в выборке сотни тысяч записей и более, запрос COUNT(*), считающий записи, сам по себе может выполняться минуту и более!&lt;br /&gt;Конечно, большого смысла показывать пользователю более нескольких тысяч записей нет. В случае если выборка очень большая, пользователю нужно увидеть просто фрагмент данных, что бы он мог на глаз проверить, что это вообще то что нужно.&lt;br /&gt;Но иногда заказчик хочет, что бы пользователь всё же мог: (a) узнать общее количество записей в выборке; (b) перейти для просмотра на последнюю страницу выбоки.&lt;br /&gt;Эти условия на мой взгляд, являются вполне обоснованными, т.к. могут реально помочь пользователю соориентироваться в его работе.&lt;br /&gt;Мы не можем гарантировать выдачу результата за приемлемое для интерактивного взаимодействия «запрос-ответ» время, но можем показывать пользователю динамическую оценку результата требования (a).&lt;br /&gt;Я имею в виду следующее: получив в течении секунд после запроса первую «страницу» и переключатель страниц: на 1-10 страницы, пользователь наблюдает бегущее увеличивающееся значение количества записей в выборке: «найденно не менее 200 записей...», «не менее 300...», «не менее 400...» итд. По мере этого может соответствующим образом расти и переключатель страниц. Пока не увидет окончательный результат «в выборке 12345 записей!», и появится возможность переключиться на последнюю «страницу».&lt;br /&gt;Как это сделать?&lt;br /&gt;Ни логика реляционных СУБД (в данном случае MySQL) ни логика WWW и HTTP не была изначально расчитана на такую работу.&lt;br /&gt;MySQL не может информировать о состоянии счётчика COUNT(*), до тех пор, пока не подсчёт не будет полностью завершен, то есть задав такой запрос мы должны ждать пока он не выполнится, не дождавшись полного подсчёта мы не можем получить ответ на вопрос «ну а есть ли там хотя бы 100 записей?».&lt;br /&gt;HTTP не был преспособлен для установки постоянных соединений, так как это делают TCP-socket-ы. Однако тут всё же проще: есть что называется «хак», можно просто не закрывать соединение после отработки основной части PHP (предварительно отключив тайм-аут выполнения скриптов!).&lt;br /&gt;После завершающего &amp;lt;/HTML&amp;gt; браузер продолжает воспринимать комманды вызова JavaScript-функции с данными в аргументах вида:&lt;code&gt;&lt;pre&gt;
&amp;lt;SCRIPT&amp;gt;counter(200);&amp;lt;/SCRIPT&amp;gt;
&amp;lt;SCRIPT&amp;gt;counter(300);&amp;lt;/SCRIPT&amp;gt;
…
&amp;lt;SCRIPT&amp;gt;total(12345);&amp;lt;/SCRIPT&amp;gt;&lt;/pre&gt;&lt;/code&gt;Естественно, заранее надо создать и загрузить в блоке HEAD эти JavaScript фунцкии counter(...) и total(...), которые будут утилизировать динамически поступающие значения (в данном случае текущая оценка размера выборки) должным образом (показывать их пользователю в должном месте, перестраивать переключатель «страниц» итд). Это не совсем «по-правилам», но это работает. После каждой такой посылки приходится посылать килобайтик пробелов и переводов строки (не считая уж комманды flush(); в PHP), т.к. полностью отключить кеширование по всей цепочке от серверного скрипта до обработчика JavaScript в браузерах не возможно.&lt;br /&gt;При работе с MySQL, ради подсчёта COUNT(*) остаётся только после посылки нужных записей продолжать читать ненужные записи в холостую, ни куда не отправляя результаты, а только пересчитывая их в цикле и вызывая через каждые, скажем, 100 посчитанных записей вывод новой порции тегов «SCRIPT», а в конце - &lt;code&gt;&lt;pre&gt;&amp;lt;SCRIPT&amp;gt;total(...);&amp;lt;/SCRIPT&amp;gt; &lt;/pre&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;В моей работе данные отправлялись не в браузер, а в специальную программу-клиент в формате XML, где разбирались по мере поступления SAX-парсером. С XML такой подход выглядит более элегантно. Я сразу грузил данные для всех «страниц», при их переключении нового запроса к серверу не создавалось. Мой более сложный алгорим всего этого таков:&lt;br /&gt;Запускается небуферезированный цикл чтения выборки. Записи выдаются в клиент, в атрибуте тега XML записи указывается порядковый номер записи. Программма-клинет показывает пользователю записи по мере поступления, и он сразу может с ними работать.&lt;br /&gt;Когда выведено заданное предельное кол-во страниц P, то есть M*P записей, они вместовыдачи в клиент начинают попадать в FIFO буфер $dlist = new SplDoublyLinkedList(); // Класс SplDoublyLinkedList из SPL есть в PHP начинаяя с версии 5.3.0&lt;br /&gt;Этот буфер растёт до предела равного максимальному возможному размеру страницы M:&lt;code&gt;&lt;pre&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$dlist&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;push&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$r&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;//&amp;nbsp;$r&amp;nbsp;-&amp;nbsp;новый&amp;nbsp;элемент&amp;nbsp;XML&amp;nbsp;с&amp;nbsp;очередной&amp;nbsp;записью&amp;nbsp;из&amp;nbsp;выборки&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;if&amp;nbsp;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$dlsize&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;&amp;gt;=&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$dlmax&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;)&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;//&amp;nbsp;буфер&amp;nbsp;заполнен&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$dlist&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;shift&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$dlsize&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;++;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;//&amp;nbsp;$dlsize&amp;nbsp;это&amp;nbsp;размер&amp;nbsp;буфера&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/code&gt;Как только выборка завершилась мы выдаём содержимое этого бувера по HTTP клиенту. В моём коде это выглядит так:&lt;pre&gt;&lt;code&gt; &lt;span style=&quot;color: #0000BB&quot;&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fwrite&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$f&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&quot;&amp;lt;lastblock&amp;nbsp;size=\&quot;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$dlsize&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;\&quot;&amp;gt;\n&quot;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$dlist&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;setIteratorMode&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;SplDoublyLinkedList&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;IT_MODE_FIFO&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$dlist&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;rewind&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;();&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$dlist&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;valid&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;();&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$dlist&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;next&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;())&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;fwrite&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$f&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$dlist&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;current&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;()&amp;nbsp;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;fwrite&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$f&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&quot;&amp;lt;/lastblock&amp;gt;\n&quot;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;Клиент может понять, что это последняя «страница», во-первых, по тегу lastblock либо, во-вторых, по разрыву в порядковых нумерах записей выборки.&lt;br /&gt;Если же по истечению некоторого времени после начала «чистого счёта» или например, после пересчёта заданного количества записей «конца счёту не видно», запускается второй SQL-запрос COUNT(*), выполнение которого происходит параллельно. Т.к. в первом запросе используется не буфферезированное чтение обязательно надо делать второе соединение с MySQL. Хотя второй одновременно работающий в СУБД запрос тормозит первый, такой подход всё же показывает в среднем выйгрыш в скорости обслуживания.&lt;br /&gt;Эти два условных «потока» выполнения начинают работать параллельно, и информация об общем колличестве записей и о содержании последней «страницы» в конце концов берётся из того потока, который выполнился быстрее (первый по любому поставляет «бегущую» информацию о размере выборки, не позволяя пользователя соскучиться).&lt;br /&gt;В ходе второго «потока» после отработки первого SQL-зароса COUNT(*) запускается второй SQL-запрос с LIMIT-ом для получения записей последней «страницы». Отслеживание его выполнения происходит в цикле чтения основного первого «потока» с помощью упомянутой мной в предыдущем посте конструкции&lt;code&gt;&lt;pre&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;//&amp;nbsp;request&amp;nbsp;with&amp;nbsp;LIMIT&amp;nbsp;is&amp;nbsp;already&amp;nbsp;sent&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$ready&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$error&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$reject&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;nbsp;array(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$mysqli2&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;//&amp;nbsp;$mysqli2&amp;nbsp;—&amp;nbsp;объект&amp;nbsp;второго&amp;nbsp;соединения.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;или&amp;nbsp;может&amp;nbsp;так?:&amp;nbsp;$ready[]&amp;nbsp;=&amp;nbsp;$error[]&amp;nbsp;=&amp;nbsp;$reject[]&amp;nbsp;=&amp;nbsp;$mysqli2;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;mysqli_poll&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$ready&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$error&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$reject&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;50000&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;//&amp;nbsp;wait&amp;nbsp;1/20&amp;nbsp;sec&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;if&amp;nbsp;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;count&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$ready&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;)&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;…&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;/code&gt;После того как любой из двух условных потоков завершился происходит корректное закрытие XML, завершение PHP и передачи, и программа-клиент информаирует о том что приём данных, наконец, полностью завершён.&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align:left&quot;&gt;&lt;font size=&quot;-2&quot;&gt;&lt;a href=&quot;http://lj.rossia.org/users/shestero/138917.html&quot;&gt;&lt;img src=&quot;http://lj.rossia.org/numreplies/shestero/138917&quot; border=0 width=20 height=14  alt=&quot;number of comments&quot; style=&quot;border:0px;&quot; /&gt; &lt;strong&gt;Comments&lt;/strong&gt;&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;</description>
  <comments>http://lj.rossia.org/users/shestero/138917.html</comments>
  <category>databases</category>
  <category>it</category>
  <category>mysql</category>
  <category>php</category>
  <lj:mood>satisfied</lj:mood>
</item>
<item>
  <guid isPermaLink='true'>http://lj.rossia.org/users/shestero/138522.html</guid>
  <pubDate>Fri, 04 Apr 2014 00:01:41 GMT</pubDate>
  <title>Неблокирующий запрос к MySQL из PHP</title>
  <link>http://lj.rossia.org/users/shestero/138522.html</link>
  <description>Казалось бы – что можно сказать нового к такой заезженной и тривиальной теме: доступ к данным в MySQL по запросу через браузер – Apache – PHP?&lt;br /&gt;Оказывается и в такой казалось бы банальной операции можно встретить проблемы, которые мало кто знает как решать.&lt;br /&gt;&lt;br /&gt;В задачах, с которыми столкнулся я, запросы к СУБД штатно могут быть столь тяжёлыми, что выполнятся продолжительное время. Заметные задержки при этом оказались неизбежны – даже на самых быстрых серверах с применением рейдов-0 из SSD под данные СУБД. Существенные задержки позволили появиться возможности и проблеме: пользователь может захотеть прервать выполнение запроса, передумать ждать результатов. Иными словами запрос может стать не актуальным, и тогда его надо корректно прервать. То же самое может произойти из-за аварийного обрыва соединения или из-за тайм-аута.&lt;br /&gt;&lt;br /&gt;Реализация таких отмен запросов, может потребоваться и в простом web-интерфейсе, и при запросах данных через AJAX, и при взаимодействии с сервером специальных клиентских программами по HTTP. С серверной стороны, в принципе, подобная задача может возникнуть и при получении данных из других СУБД или вообще из других медленных источников. В этой статье я привожу решение, относящееся к извлечению данных именно из MySQL через PHP под Apache2 используя новый программный интерфейс MySQLi, то это относится к множеству вариантов клиентов, но к совершенно конкретному получению данных на сервере.&lt;br /&gt;&lt;br /&gt;Знакомство вопросом реализации обработчиков отмены или обрыва сразу выявило принципиальное несовершенство связки PHP-Apache2: PHP-скрипт в принципе не может обнаружить обрыв или даже штатное закрытие соединения до тех пор пока не будет ничего отправлять клиенту в сеть. Причём по не регламентировано сколько данных для этого надо отправить, в указаниях все вроде соглашаются с тем что одного байта вроде бы будет не достаточно, часто отправляют холостые блоки из целого килобайта нулей или пробелов. Возможно, это зависит от конкретного сервера, версии PHP и их настроек. Экспериментально я определил, что на моём сервере можно отправлять 32 перевода строки.&lt;br /&gt;&lt;br /&gt;В связке PHP-MySQL тоже оказался существенный изъян: все простые способы чтения данных оказались блокирующими, т.е. они приостанавливают работу PHP скрипта до тех пор, пока MySQL не вернёт их (либо не случится тайм-аут). И соответственно, в это время скрипт ничего послать в сеть не может для того, что бы проверить соединение с HTTP-клиентом. Да, можно применить небуфиризированное чтение, но в моём случае задержки не были связанны с большим количеством записей в выборках; даже извлечение одного единственного значения из СУБД может приостановить ход выполнения PHP. В случае отмены можно, конечно, просто оборвать HTTP-соединение с клиента. Но при этом не только бесполезно перенагружается сервер, который продолжает обрабатывать ненужный “зомби-запрос”, но если вы применяете сессии, а СУБД “уйдёт в себя”, ненароком может произойти глобальная блокировка не только окна браузера с запросом, но и всего сайта, да так, что придётся перегружать всё сбрасывая сессию. Блокировка сессии может случится, если на момент обращения к СУБД, которое затянулось, сессия не была закрыта на запись.&lt;br /&gt;&lt;br /&gt;Существует одно универсальное решение – при постановке запроса в MySQL получить номер MySQL-процесса, передать его в клиент. Тот если надо, может его использовать, если понадобится, передав по другому соединению в специальный скрипт на сервере, который “собъёт” ставший не нужным запрос с помощью SQL-зароса-комманды KILL, что в свою очередь приведёт и к разблокировки PHP, обрабатывающего запрос. Этот способ, без сомнения, применим, однако он сложен, некрасив и небезопасен. При его реализации нужно опять-таки иметь в виду опасность блокировок сессии, о которой я упоминал выше.&lt;br /&gt;&lt;br /&gt;Мне пришло в голову использовать в PHP параллельный поток (thread) для проверки наличия соединения по HTTP, приблизительно так:&lt;br /&gt;&lt;font color=&quot;blue&quot;&gt;&lt;code&gt;&lt;pre&gt;&lt;span style=&quot;color: #007700&quot;&gt;class&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;Ping0&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;extends&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;Thread&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;run&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;()&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;//if&amp;nbsp;(ob_get_level())&amp;nbsp;ob_end_clean();&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;sleep&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;str_repeat&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&quot;\n&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;32&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;flush&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;//&amp;nbsp;Error&amp;nbsp;6&amp;nbsp;(net::ERR_FILE_NOT_FOUND):&amp;nbsp;The&amp;nbsp;file&amp;nbsp;or&amp;nbsp;directory&amp;nbsp;could&amp;nbsp;not&amp;nbsp;be&amp;nbsp;found.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;ob_flush&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;db_query_long&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$qstring&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$conn&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;)&amp;nbsp;&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;ignore_user_abort&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;//if&amp;nbsp;(ob_get_level())&amp;nbsp;ob_end_clean();&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$ping0&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;nbsp;new&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;Ping0&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$ping0&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;start&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;();&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$ret&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;db_query&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$qstring&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$conn&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;//&amp;nbsp;$ping0-&amp;gt;stop();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;return&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$ret&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;;&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/code&gt;&lt;/font&gt;Но этот способ не заработал, скрипт падал с неадекватными ошибками на flush(), создающими впечатление багов в PHP. Встроенный класс потоков &lt;a href=&quot;http://ru2.php.net/manual/en/class.thread.php&quot;&gt;Thread&lt;/a&gt; в PHP произвёл впечатление очень “сырого”, его даже не было в стандартной инсталляции и что бы воспользоваться требовалось пересобирать PHP из исходников с поддержкой ZTS (Zend Thread Safety) (опции --enable-maintainer-zts или --enable-zts в Windows). В общем, я решил оставить этот путь, хотя его преимущество в том, что он мог бы помочь в решении задачи обработчика отмены запросов не только из MySQL но и из других медленных источников данных.&lt;br /&gt;К счастью, в MySQLi есть нетривиальный способ обработки запроса к БД, который позволил мне благополучно совершить неблокирующее чтение непосредственно. &lt;br /&gt;Итак к вашему вниманию вот фрагмент функции, организующий неблокирующей запрос и возвращающей результат в виде объекта mysqli_result :&lt;br /&gt;&lt;font color=&quot;blue&quot;&gt;&lt;code&gt;&lt;pre&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$r&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$gl_mysqli1&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;query&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$sql&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;MYSQLI_ASYNC&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;ob_implicit_flush&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;ignore_user_abort&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;//&amp;nbsp;можно&amp;nbsp;поставить&amp;nbsp;true&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;for&amp;nbsp;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$i&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$i&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$gl_tout&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$i&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;++)&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;//&amp;nbsp;$gl_tout&amp;nbsp;-&amp;nbsp;тайм-аут;&amp;nbsp;максимальное&amp;nbsp;время&amp;nbsp;в&amp;nbsp;секундах&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$ready&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$error&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$reject&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;nbsp;array(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$gl_mysqli1&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;//&amp;nbsp;$ready[]&amp;nbsp;=&amp;nbsp;$error[]&amp;nbsp;=&amp;nbsp;$reject[]&amp;nbsp;=&amp;nbsp;$gl_mysqli1;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;mysqli_poll&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$ready&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$error&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$reject&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;//&amp;nbsp;ждём&amp;nbsp;1&amp;nbsp;cек;&amp;nbsp;можно&amp;nbsp;воспользоваться&amp;nbsp;пятым&amp;nbsp;параметром&amp;nbsp;-&amp;nbsp;микросекунды&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;if&amp;nbsp;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;count&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$ready&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;)&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;//&amp;nbsp;ready&amp;nbsp;-&amp;nbsp;данные&amp;nbsp;получены&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$r&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;=&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$gl_mysqli1&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;reap_async_query&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$r&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;)&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;//&amp;nbsp;успех&amp;nbsp;-&amp;nbsp;данные&amp;nbsp;получены&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;return&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$r&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;//&amp;nbsp;some&amp;nbsp;error&amp;nbsp;??&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;return&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$r&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;count&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$error&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;)&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;0&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;||&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;count&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$reject&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;)&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;0&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;//&amp;nbsp;какая-то&amp;nbsp;ошибка&amp;nbsp;-&amp;nbsp;error&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;trigger_error&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&quot;(&quot;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;.&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$gl_mysqli1&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;connect_errno&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;.&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&quot;)&amp;nbsp;&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;.&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;$gl_mysqli1&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;connect_error&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;E_USER_ERROR&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;null&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;//&amp;nbsp;проверка&amp;nbsp;соединения&amp;nbsp;с&amp;nbsp;клиентом&amp;nbsp;по&amp;nbsp;HTTP&amp;nbsp;-&amp;nbsp;test&amp;nbsp;connection&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;echo&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;str_repeat&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #DD0000&quot;&gt;&quot;\n&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;32&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;);&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;//&amp;nbsp;посылка&amp;nbsp;нулей&amp;nbsp;приводит&amp;nbsp;к&amp;nbsp;ошибкам&amp;nbsp;и&amp;nbsp;глюкам&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;flush&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;ob_flush&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;connection_status&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;()!=&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;CONNECTION_NORMAL&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;//&amp;nbsp;соединение&amp;nbsp;с&amp;nbsp;клиентом&amp;nbsp;оборволось,&amp;nbsp;запрос&amp;nbsp;на&amp;nbsp;СУБД&amp;nbsp;не&amp;nbsp;актуален&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;return&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0000BB&quot;&gt;null&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;//&amp;nbsp;возможно&amp;nbsp;нормальное&amp;nbsp;состояние&amp;nbsp;—&amp;nbsp;данные&amp;nbsp;ещё&amp;nbsp;не&amp;nbsp;готовы,&amp;nbsp;надо&amp;nbsp;подождать&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #007700&quot;&gt;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #FF8000&quot;&gt;//&amp;nbsp;если&amp;nbsp;мы&amp;nbsp;тут&amp;nbsp;-&amp;nbsp;время&amp;nbsp;вышло&amp;nbsp;-&amp;nbsp;таймайт&amp;nbsp;$gl_tout&amp;nbsp;сек.&lt;br /&gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/code&gt;&lt;/font&gt;&lt;br /&gt;Метод &lt;a href=&quot;http://php.net/manual/en/mysqli.poll.php&quot;&gt;mysqli::poll&lt;/a&gt; до сих пор весьма плохо документирован...&lt;br /&gt;Примечание: лишние переводы строки между управляющими тегами HTML и XML обычно никак не проявляются.&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align:left&quot;&gt;&lt;font size=&quot;-2&quot;&gt;&lt;a href=&quot;http://lj.rossia.org/users/shestero/138522.html&quot;&gt;&lt;img src=&quot;http://lj.rossia.org/numreplies/shestero/138522&quot; border=0 width=20 height=14  alt=&quot;number of comments&quot; style=&quot;border:0px;&quot; /&gt; &lt;strong&gt;Comments&lt;/strong&gt;&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;</description>
  <comments>http://lj.rossia.org/users/shestero/138522.html</comments>
  <category>databases</category>
  <category>it</category>
  <category>mysql</category>
  <category>php</category>
</item>
<item>
  <guid isPermaLink='true'>http://lj.rossia.org/users/shestero/138222.html</guid>
  <pubDate>Wed, 02 Apr 2014 14:45:06 GMT</pubDate>
  <title>Извлечение данных из MS Access-баз простыми, кросс-платформенными и бесплатными способами</title>
  <link>http://lj.rossia.org/users/shestero/138222.html</link>
  <description>По работе мне частенько случается обмениваться большими (иногда многогигабайтовыми) объёмами табличных данных. Такие таблицы обычно приходят в понятном простому пользователю формате — MS Access. Сейчас я расскажу, как можно эффективно извлекать данные из этих файлов для того что бы пустить их в обработку или, например, ввести их в MySQL.&lt;br /&gt;&lt;br /&gt;Проблема тут в том, что MS Access — проприетарная программа, которую надо бы покупать, да и не всегда она просто бывает под рукой на конкретной машине, да и сделана под Windows (а я часто на Linux-е). Если архив с базой приходит от коллеги уже на сервер хостинга, приходилось сначала скачивать его на рабочий компьютер, извлекать данные, а потом обычно запаковывать и закачивать извлечённые данные обратно. Кроме этого, на рабочей локальной машине открывать предельно объёмные базы MS Access им самим только лишь для извлечения данных не оптимально по расходу ресурсов оперативной памяти и времени.&lt;br /&gt;&lt;br /&gt;Первое на что натыкаешься на этом пути — утилиты &lt;a href=&quot;http://mdbtools.sourceforge.net&quot;&gt;mdbtools&lt;/a&gt;. Они действительно очень помогли мне. Но к сожалению, у них есть недостатки. Во-первых, не работают с новым форматом accdb. Во-вторых, проблемы с кривыми названиями сущностей в базе (имена таблиц, колонок с пробелами, русскими буквами итд). Добиться ведь, что бы имена колонок были сразу какие удобно для обработки от поставщиков практически не возможно.&lt;br /&gt;&lt;br /&gt;Тогда я использовал ODBC. Драйвера для работы с Access-базами (как mdb так и accdb) можно бесплатно взять с сайта Microsoft. Для выгрузки в TSV («значения разделённые табуляцией» — простой универсальный формат, который понимют и офисные программы и MySQL) я написал простейшую программу на Qt.&lt;br /&gt;&lt;br /&gt;Этот способ мне то же изрядно помог, однако я столкнулся с такими недостатками:&lt;br /&gt;&lt;br /&gt;1) По мере чтения таблицы резервируется оперативная память. Для работы с действительно большими таблицами нужно иметь не менее 4 Gb свободной оперативной памяти.&lt;br /&gt;&lt;br /&gt;2) Пожалуй самое страшное — если ресурсов не хвататет, программа прерывает работу без какого-либо сообщения или даже признака ошибки. Иногда экспортируются не все строки таблицы, но ещё хуже, когда в выходных данных пропадают (без какого либо обращающего на себя сообщения!) значения в определённых столбцах.&lt;br /&gt;&lt;br /&gt;3) На 64-битную систему ставятся 64-битовые ODBC-драйвера, а что бы с ними работать, программа должна быть также откомпилирована как 64-битовый исполняемый модуль. А для того что бы его сделать понадобится 64-битовый Qt и компилятор… &lt;br /&gt;&lt;br /&gt;4) Присутствие в системе JET-движка MS Access-a без MS Office у меня ставит в тупик автоматическую систему обновление Microsoft, тщетно пытающуюся обновить несуществующий Office.&lt;br /&gt;&lt;br /&gt;5) Под Linux-ом мне не удалось этим воспользоваться. Хотя в принципе это возможно. Linux-овые ODBC-драйвера для работы с Access-базами платные, но под эмулятором Wine должно быть можно задействовать native-ODBC-драйвера (сделанные для Windows). Инструкции как это сделать есть в Интернете. Но мне не удалось: поддержка этого процесса «из коробки» в новых версиях Ubuntu, очевидно, утратилась. И «подгонять напильником» там, видимо, придётся не мало! Кстати, кому удалось использовать nativeODBC для доступа к Access-файлам через Wine под Ubuntu 12 илм 13 — отпишитесь!&lt;br /&gt;&lt;br /&gt;Я уж подумал, ничего лучше не будет — формат то «проприетарный». Но в августе прошлого 2013-го года появилась бесплатная библиоткека Jackcess 2 (см. &lt;a href=&quot;http://jackcess.sourceforge.net&quot;&gt; jackcess.sourceforge.net&lt;/a&gt; ), написанная на Java, которая позволяет легко и просто работать с Access-файлами, причём как старыми mdb, так и новыми accdb. Таким образом я не только элементарно самостоятельно сделал конвертер из Access в TSV но и получил его кроссплатформенным — ведь это Java. Теперь пользуюсь им и радуюсь.&lt;br /&gt;&lt;br /&gt;Исходники и бинарники конвертеров я выложил для скачки здесь:&lt;br /&gt;&lt;a href=&quot;http://netdbview.com/accdb&quot;&gt;netdbview.com/accdb&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Успехов в использовании!&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align:left&quot;&gt;&lt;font size=&quot;-2&quot;&gt;&lt;a href=&quot;http://lj.rossia.org/users/shestero/138222.html&quot;&gt;&lt;img src=&quot;http://lj.rossia.org/numreplies/shestero/138222&quot; border=0 width=20 height=14  alt=&quot;number of comments&quot; style=&quot;border:0px;&quot; /&gt; &lt;strong&gt;Comments&lt;/strong&gt;&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;</description>
  <comments>http://lj.rossia.org/users/shestero/138222.html</comments>
  <category>accdb</category>
  <category>it</category>
  <category>jackacess</category>
  <category>mdb</category>
  <category>ms access</category>
  <category>mysql</category>
  <category>odbc</category>
  <category>tsv</category>
  <category>сырые данные</category>
  <lj:mood>satisfied</lj:mood>
</item>
<item>
  <guid isPermaLink='true'>http://lj.rossia.org/users/shestero/137911.html</guid>
  <pubDate>Tue, 21 Jan 2014 11:16:18 GMT</pubDate>
  <title>Моё отношение к нынешним событиям в Украине</title>
  <link>http://lj.rossia.org/users/shestero/137911.html</link>
  <description>Я не мало пожил в Украине за последние несколько лет — из городов останавливался в Харькове, Киеве, Львове; гулял по Одессе, ездил в Ивано-Франкiвск. Кроме городов жил и в деревнях и хуторах; однажды даже проделал многодневный путь на велосипеде от трассы Киев-Москва до Харькова через Конотоп — Сумы. Ну и конечно — Крым!&lt;br /&gt;Теперь там повсюду у меня осталось много хороших знакомых и друзей.&lt;br /&gt;&lt;br /&gt;Мне очень нравилась Украина — какой я её видел. Поэтому особенно неприятно теперь увидеть другую сторону... &lt;br /&gt;Я определённо не «войн». Может кому-то и такое по душе, но все подобные революционные уличные драки с метанием камней меня что-то совсем не вдохновляют, даже если в результате «хорошие» берут вверх над «плохими». Мне бы хотелось, что б разрешение конфликтов между людьми происходило как-то подостойнее (а лучше, что бы до такой дикой напряженности вообще не доходило). Но к сожалению, увы, доходит частенько в Мире — то здесь, то там, видимо такова уж природа людей.&lt;br /&gt;&lt;br /&gt;И остаётся только надеяться и желать: пусть моих знакомых «пронесёт», пусть они и вся Украина каким-то образом отделаются минимальным для себя уроном.&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align:left&quot;&gt;&lt;font size=&quot;-2&quot;&gt;&lt;a href=&quot;http://lj.rossia.org/users/shestero/137911.html&quot;&gt;&lt;img src=&quot;http://lj.rossia.org/numreplies/shestero/137911&quot; border=0 width=20 height=14  alt=&quot;number of comments&quot; style=&quot;border:0px;&quot; /&gt; &lt;strong&gt;Comments&lt;/strong&gt;&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;</description>
  <comments>http://lj.rossia.org/users/shestero/137911.html</comments>
  <category>ukraine</category>
  <lj:mood>worried</lj:mood>
</item>
<item>
  <guid isPermaLink='true'>http://lj.rossia.org/users/shestero/137538.html</guid>
  <pubDate>Tue, 12 Nov 2013 13:45:13 GMT</pubDate>
  <title>Минск</title>
  <link>http://lj.rossia.org/users/shestero/137538.html</link>
  <description>Эти выходные провёл преимущественно в Минском Буддийский Центре (MinskBC).&lt;br /&gt;Т.к. фотографировать людей нельзя было по консперативным соображениям (в Белоруси всё не просто), а Будаформ - по религиозным(?), достойных фотографий нет.&lt;br /&gt;Cм. также: &lt;a href=&quot;http://minsk.buddhism.ru&quot;&gt;http://minsk.buddhism.ru&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align:left&quot;&gt;&lt;font size=&quot;-2&quot;&gt;&lt;a href=&quot;http://lj.rossia.org/users/shestero/137538.html&quot;&gt;&lt;img src=&quot;http://lj.rossia.org/numreplies/shestero/137538&quot; border=0 width=20 height=14  alt=&quot;number of comments&quot; style=&quot;border:0px;&quot; /&gt; &lt;strong&gt;Comments&lt;/strong&gt;&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;</description>
  <comments>http://lj.rossia.org/users/shestero/137538.html</comments>
</item>
<item>
  <guid isPermaLink='true'>http://lj.rossia.org/users/shestero/137471.html</guid>
  <pubDate>Sat, 05 Oct 2013 18:09:20 GMT</pubDate>
  <title>Глиночурка</title>
  <link>http://lj.rossia.org/users/shestero/137471.html</link>
  <description>Владимирская область. Заброшенная забытая деревня в лесу без света и с единственным оставшимся местным жителем - стариком художником. Три часа пути от Москвы.&lt;br /&gt;Мой приятель Сергей ( &lt;a href=&quot;http://vk.com/id4501277&quot;&gt;http://vk.com/id4501277&lt;/a&gt; ) доделывает там отшельнический круглый домик из глиночурки (из местная лиственницы) с дерновой крышей.&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://shestero.info/photos4public/2013-10/DSC09947h.JPG&quot; width=&quot;900&quot; height=&quot;675&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://shestero.info/photos4public/2013-10/DSC09959.JPG&quot; width=&quot;900&quot; height=&quot;675&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://shestero.info/photos4public/2013-10/DSC09958.JPG&quot; width=&quot;900&quot; height=&quot;675&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://shestero.info/photos4public/2013-10/DSC09967v.JPG&quot; width=&quot;900&quot; height=&quot;1200&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Фотографии сделаны вчера&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Сергей собирается зимовать и вообще теперь жить в этом домике.&lt;br /&gt;&lt;br /&gt;PS Если кто-то желает помочь Сергею как волонтёр - руками - можно приехать. Обращаться за информацией можно ко мне.&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align:left&quot;&gt;&lt;font size=&quot;-2&quot;&gt;&lt;a href=&quot;http://lj.rossia.org/users/shestero/137471.html&quot;&gt;&lt;img src=&quot;http://lj.rossia.org/numreplies/shestero/137471&quot; border=0 width=20 height=14  alt=&quot;number of comments&quot; style=&quot;border:0px;&quot; /&gt; &lt;strong&gt;Comments&lt;/strong&gt;&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;</description>
  <comments>http://lj.rossia.org/users/shestero/137471.html</comments>
  <category>ecohouse</category>
  <category>photos</category>
  <lj:mood>calm</lj:mood>
</item>
<item>
  <guid isPermaLink='true'>http://lj.rossia.org/users/shestero/137210.html</guid>
  <pubDate>Mon, 16 Sep 2013 14:52:58 GMT</pubDate>
  <title>В маленькой Украинской хатке моего друга (район г.Миргород)</title>
  <link>http://lj.rossia.org/users/shestero/137210.html</link>
  <description>&lt;img src=&quot;http://shestero.info/photos4public/brn-2013-09/DSC09869h900x675.JPG&quot; width=&quot;900&quot; height=&quot;675&quot;&gt;&lt;br /&gt;В этом домике есть одна комната, прихожая и кухонка.&lt;br /&gt;&lt;br /&gt;Внутри ж так:&lt;br /&gt;&lt;img src=&quot;http://shestero.info/photos4public/brn-2013-09/DSC09864.JPG&quot; width=&quot;900&quot; height=&quot;675&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://shestero.info/photos4public/brn-2013-09/DSC09867.JPG&quot; width=&quot;900&quot; height=&quot;1200&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align:left&quot;&gt;&lt;font size=&quot;-2&quot;&gt;&lt;a href=&quot;http://lj.rossia.org/users/shestero/137210.html&quot;&gt;&lt;img src=&quot;http://lj.rossia.org/numreplies/shestero/137210&quot; border=0 width=20 height=14  alt=&quot;number of comments&quot; style=&quot;border:0px;&quot; /&gt; &lt;strong&gt;Comments&lt;/strong&gt;&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;</description>
  <comments>http://lj.rossia.org/users/shestero/137210.html</comments>
  <category>photos</category>
  <lj:mood>satisfied</lj:mood>
</item>
<item>
  <guid isPermaLink='true'>http://lj.rossia.org/users/shestero/136727.html</guid>
  <pubDate>Mon, 16 Sep 2013 06:18:48 GMT</pubDate>
  <title>За белыми грибами (Украина)</title>
  <link>http://lj.rossia.org/users/shestero/136727.html</link>
  <description>Позавчера утричком ездили за грибами в лесок в сторону Великих Сороченцев.&lt;br /&gt;&lt;br /&gt;Набрали кстати очень много отборных молодых белых!&lt;br /&gt;Столько сразу я даже во владимирской области не видал.&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://shestero.info/photos4public/brn-2013-09/DSC09855h900x675.JPG&quot; width=&quot;900&quot; height=&quot;675&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://shestero.info/photos4public/brn-2013-09/DSC09854h900x675.JPG&quot; width=&quot;900&quot; height=&quot;675&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://shestero.info/photos4public/brn-2013-09/DSC09863h900x675.JPG&quot; width=&quot;900&quot; height=&quot;675&quot;&gt;&lt;br /&gt;&lt;br /&gt;PS Суп был чудеснейший!!&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align:left&quot;&gt;&lt;font size=&quot;-2&quot;&gt;&lt;a href=&quot;http://lj.rossia.org/users/shestero/136727.html&quot;&gt;&lt;img src=&quot;http://lj.rossia.org/numreplies/shestero/136727&quot; border=0 width=20 height=14  alt=&quot;number of comments&quot; style=&quot;border:0px;&quot; /&gt; &lt;strong&gt;Comments&lt;/strong&gt;&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;</description>
  <comments>http://lj.rossia.org/users/shestero/136727.html</comments>
  <category>photos</category>
  <lj:mood>satisfied</lj:mood>
</item>
<item>
  <guid isPermaLink='true'>http://lj.rossia.org/users/shestero/136400.html</guid>
  <pubDate>Thu, 22 Aug 2013 19:54:41 GMT</pubDate>
  <title>Ускользающее лето 2013</title>
  <link>http://lj.rossia.org/users/shestero/136400.html</link>
  <description>&lt;img src=&quot;http://shestero.info/photos4public/2013-08/IMG_4303v900x1200.JPG&quot; width=&quot;900&quot; height=&quot;1200&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://shestero.info/photos4public/2013-08/IMG_3351v900x1200.JPG&quot; width=&quot;900&quot; height=&quot;1200&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;http://shestero.info/photos4public/2013-08/IMG_3342v900x1200.JPG&quot; width=&quot;900&quot; height=&quot;1200&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Эти фотографии сделаны Анастасией Волменских.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align:left&quot;&gt;&lt;font size=&quot;-2&quot;&gt;&lt;a href=&quot;http://lj.rossia.org/users/shestero/136400.html&quot;&gt;&lt;img src=&quot;http://lj.rossia.org/numreplies/shestero/136400&quot; border=0 width=20 height=14  alt=&quot;number of comments&quot; style=&quot;border:0px;&quot; /&gt; &lt;strong&gt;Comments&lt;/strong&gt;&lt;/a&gt;&lt;/font&gt;&lt;/div&gt;</description>
  <comments>http://lj.rossia.org/users/shestero/136400.html</comments>
  <category>photos</category>
  <category>summer</category>
  <category>ukraine</category>
  <lj:mood>satisfied</lj:mood>
</item>
</channel>
</rss>
