<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[现实的梦想]]></title> 
<link>blog.jiqila.com/index.php</link> 
<description><![CDATA[Web应用开发与服务器架构]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[现实的梦想]]></copyright>
<item>
<link>blog.jiqila.com/post/280/</link>
<title><![CDATA[FreeBSD 9.0 Release版本放出了]]></title> 
<author>袁旭东 &lt;&gt;</author>
<category><![CDATA[Linux/Unix系统]]></category>
<pubDate>Fri, 06 Jan 2012 11:33:44 +0000</pubDate> 
<guid>blog.jiqila.com/post/280/</guid> 
<description>
<![CDATA[ 
	　　刚刚在FreeBSD.org上看到，FreeBSD 9.0 Release ISO文件已经可以下载了。不过，网站页面还是显示的RC3。<br/><br/>　　AMD64下载地址CD：ftp://ftp.freebsd.org/pub/FreeBSD/releases/amd64/amd64/ISO-IMAGES/9.0/FreeBSD-9.0-RELEASE-amd64-disc1.iso<br/>　　AMD64下载地址DVD：ftp://ftp.freebsd.org/pub/FreeBSD/releases/amd64/amd64/ISO-IMAGES/9.0/FreeBSD-9.0-RELEASE-amd64-dvd1.iso<br/><br/><br/>Tags - <a href="blog.jiqila.com/tags/freebsd/" rel="tag">freebsd</a> , <a href="blog.jiqila.com/tags/9.0/" rel="tag">9.0</a> , <a href="blog.jiqila.com/tags/release/" rel="tag">release</a>
]]>
</description>
</item><item>
<link>blog.jiqila.com/post/279/</link>
<title><![CDATA[PHP现Hash冲突漏洞，本站更新至5.3.9]]></title> 
<author>袁旭东 &lt;&gt;</author>
<category><![CDATA[Web服务器]]></category>
<pubDate>Thu, 05 Jan 2012 13:01:59 +0000</pubDate> 
<guid>blog.jiqila.com/post/279/</guid> 
<description>
<![CDATA[ 
	　　最近几天，网上公布了PHP的Hash冲突漏洞，具体就是hash表碰撞漏洞，不仅仅是PHP，JAVA、Python等语言均受影响。PHP 5.3.9 RC4及以上版本不受影响，虽然还是RC版本，但是为了不受此漏洞影响，还是决定将PHP升级至5.3.9 RC4。<br/><br/><br/>Tags - <a href="blog.jiqila.com/tags/php/" rel="tag">php</a> , <a href="blog.jiqila.com/tags/hash/" rel="tag">hash</a> , <a href="blog.jiqila.com/tags/%25E6%25BC%258F%25E6%25B4%259E/" rel="tag">漏洞</a>
]]>
</description>
</item><item>
<link>blog.jiqila.com/post/278/</link>
<title><![CDATA[我的服务器终于支持.NET了]]></title> 
<author>袁旭东 &lt;&gt;</author>
<category><![CDATA[网站运营]]></category>
<pubDate>Thu, 03 Nov 2011 10:33:52 +0000</pubDate> 
<guid>blog.jiqila.com/post/278/</guid> 
<description>
<![CDATA[ 
	　　很久以前就已经在开发服务器上安装成功了Mono，并搭建起了.NET服务器。但是，生产环境始终无法安装成功，因为生产服务器的FreeBSD版本比开发服务器版本低，当时认为是版本的原因造成的，经过了几次尝试后，始终没有成功，所以就放弃了。<br/><br/>　　就在前几天，我为生产服务器更新补丁，顺便将ports树也一起更新了，我也就顺手看了一下ports中Mono的版本，Mono竟然是最新的2.10.6。我心想，这次我安装一下试试，看行不行。所以就尝试了一下。<br/><br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content">make install clean</div></div><br/><br/>　　经过了漫长等待，并更新了几个库文件之后，Mono竟然安装成功了，我兴奋不已。做网站，与PHP相比，我还是感觉asp.net比较顺手，这下可解决了大问题了。<br/><br/>　　现在已经在服务器上搭建起了我的一个网站，打算做一个网上的图片社，经营照片冲印、相册制作、台历制作等等业务。网站地址：<br/><br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><a href="http://yxp.jiqila.com/" target="_blank">http://yxp.jiqila.com</a></div></div><br/><br/><br/>Tags - <a href="blog.jiqila.com/tags/freebsd/" rel="tag">freebsd</a> , <a href="blog.jiqila.com/tags/asp.net/" rel="tag">asp.net</a> , <a href="blog.jiqila.com/tags/mono/" rel="tag">mono</a>
]]>
</description>
</item><item>
<link>blog.jiqila.com/post/277/</link>
<title><![CDATA[解决Android中文乱码的问题]]></title> 
<author>袁旭东 &lt;&gt;</author>
<category><![CDATA[WAP/3G/手机]]></category>
<pubDate>Fri, 30 Sep 2011 00:48:03 +0000</pubDate> 
<guid>blog.jiqila.com/post/277/</guid> 
<description>
<![CDATA[ 
	　　前几天解决了PHP与Android中DES加密一致性的问题，昨天遇到了访问Web中文乱码的问题。我在服务端编写了一个PHP程序，Android通过http访问。我的网站编码是UTF-8的，而由于Android的编码是iso-8859-1的，所以导致了中文乱码的问题。知道了原因，解决起来就简单了。在获取得到的返回结果后，对数据进行编码转换就可以了。代码如下：<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content">strResult = EntityUtils.toString(httpResponse.getEntity(), &quot;<span style="color: #FF0000;">UTF-8</span>&quot;);</div></div><br/><br/>　　如果你的网站是GB2312或者GBK的，那么就把以上代码中红色的部分改成GBK就可以了，如：<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content">strResult = EntityUtils.toString(httpResponse.getEntity(), &quot;GBK&quot;);</div></div><br/><br/>　　其他编码依此类推。<br/><br/><br/>Tags - <a href="blog.jiqila.com/tags/android/" rel="tag">android</a> , <a href="blog.jiqila.com/tags/%25E4%25B8%25AD%25E6%2596%2587/" rel="tag">中文</a> , <a href="blog.jiqila.com/tags/%25E4%25B9%25B1%25E7%25A0%2581/" rel="tag">乱码</a>
]]>
</description>
</item><item>
<link>blog.jiqila.com/post/276/</link>
<title><![CDATA[FreeBSD 9.0 beta 3发布]]></title> 
<author>袁旭东 &lt;&gt;</author>
<category><![CDATA[Linux/Unix系统]]></category>
<pubDate>Wed, 28 Sep 2011 09:42:06 +0000</pubDate> 
<guid>blog.jiqila.com/post/276/</guid> 
<description>
<![CDATA[ 
	　　昨天，FreeBSD 9.0 beta3发布了，按照计划，这个版本应该是最后一下beta版了，接下来应该是RC1了。FreeBSD 9.0比计划的时间表延后了一个多月。大概估算，9.0正式版本应该会在今年的10月底左右发布。<br/><br/>　　我的测试服务器会在最近一两天内更新至FreeBSD 9.0 beta3，之前的版本是FreeBSD 9.0 beta2。由于只在其上配置了nginx，所以除了安装以外，还无法去发现在其他使用方面与8.x的不同。<br/><br/><br/>Tags - <a href="blog.jiqila.com/tags/freebsd/" rel="tag">freebsd</a>
]]>
</description>
</item><item>
<link>blog.jiqila.com/post/275/</link>
<title><![CDATA[Android与PHP互通的DES加密解密]]></title> 
<author>袁旭东 &lt;&gt;</author>
<category><![CDATA[WAP/3G/手机]]></category>
<pubDate>Sun, 25 Sep 2011 16:25:00 +0000</pubDate> 
<guid>blog.jiqila.com/post/275/</guid> 
<description>
<![CDATA[ 
	　　正在做一个Android手机的一个小应用，并且需要与网站有信息交互，网站使用PHP开发，所以需要一个Android与PHP互通的DES加密解密代码。<br/><br/>　　<strong>Android代码如下</strong>：<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content">import java.security.Key;<br/>import java.security.spec.AlgorithmParameterSpec;<br/><br/>import javax.crypto.Cipher;<br/>import javax.crypto.SecretKeyFactory;<br/>import javax.crypto.spec.DESKeySpec;<br/>import javax.crypto.spec.IvParameterSpec;<br/><br/>import android.util.Base64;<br/>&nbsp;&nbsp;<br/>public class DES2<br/>&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;public static final String ALGORITHM_DES = &quot;DES/CBC/PKCS5Padding&quot;;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * DES算法，加密<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param data 待加密字符串<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param key&nbsp;&nbsp;加密私钥，长度不能够小于8位<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @return 加密后的字节数组，一般结合Base64编码使用<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @throws CryptException 异常<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;public static String encode(String key, String data) throws Exception<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return encode(key, data.getBytes());<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * DES算法，加密<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param data 待加密字符串<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param key&nbsp;&nbsp;加密私钥，长度不能够小于8位<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @return 加密后的字节数组，一般结合Base64编码使用<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @throws CryptException 异常<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;public static String encode(String key, byte[] data) throws Exception<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DESKeySpec dks = new DESKeySpec(key.getBytes());<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(&quot;DES&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//key的长度不能够小于8位字节<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Key secretKey = keyFactory.generateSecret(dks);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Cipher cipher = Cipher.getInstance(ALGORITHM_DES);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IvParameterSpec iv = new IvParameterSpec(&quot;12345678&quot;.getBytes());<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AlgorithmParameterSpec paramSpec = iv;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cipher.init(Cipher.ENCRYPT_MODE, secretKey,paramSpec);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;byte[] bytes = cipher.doFinal(data);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return Base64.encodeToString(bytes, 3);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catch (Exception e)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw new Exception(e);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * DES算法，解密<br/>&nbsp;&nbsp;&nbsp;&nbsp; *<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param data 待解密字符串<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param key&nbsp;&nbsp;解密私钥，长度不能够小于8位<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @return 解密后的字节数组<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @throws Exception 异常<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;public static byte[] decode(String key, byte[] data) throws Exception<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DESKeySpec dks = new DESKeySpec(key.getBytes());<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(&quot;DES&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//key的长度不能够小于8位字节<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Key secretKey = keyFactory.generateSecret(dks);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Cipher cipher = Cipher.getInstance(ALGORITHM_DES);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IvParameterSpec iv = new IvParameterSpec(&quot;12345678&quot;.getBytes());<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AlgorithmParameterSpec paramSpec = iv;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cipher.init(Cipher.DECRYPT_MODE, secretKey,paramSpec);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return cipher.doFinal(data);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catch (Exception e)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw new Exception(e);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 获取编码后的值<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param key<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @param data<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @return<br/>&nbsp;&nbsp;&nbsp;&nbsp; * @throws Exception<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;public static String decodeValue(String key,String data)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;byte[] datas;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String value = null;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;datas = decode(key, Base64.decode(data, 3));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value = new String(datas);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catch (Exception e)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value = &quot;&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return value;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125; <br/>&#125;</div></div><br/><br/>　　<strong>PHP代码如下</strong>：<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content">class DES2<br/>&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;var $key;<br/>&nbsp;&nbsp;&nbsp;&nbsp;var $iv; //偏移量<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;function DES($key, $iv=0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;key = $key;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($iv == 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;iv = $key;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;iv = $iv;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;//加密<br/>&nbsp;&nbsp;&nbsp;&nbsp;function encrypt($str)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$size = mcrypt_get_block_size ( MCRYPT_DES, MCRYPT_MODE_CBC );<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$str = $this-&gt;pkcs5Pad ( $str, $size );<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data=mcrypt_cbc(MCRYPT_DES, $this-&gt;key, $str, MCRYPT_ENCRYPT, $this-&gt;iv);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return base64_encode($data);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;//解密<br/>&nbsp;&nbsp;&nbsp;&nbsp;function decrypt($str)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$str = base64_decode ($str);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$str = mcrypt_cbc(MCRYPT_DES, $this-&gt;key, $str, MCRYPT_DECRYPT, $this-&gt;iv );<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$str = $this-&gt;pkcs5Unpad( $str );<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $str;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;function pkcs5Pad($text, $blocksize)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$pad = $blocksize - (strlen ( $text ) % $blocksize);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return $text . str_repeat ( chr ( $pad ), $pad );<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;function pkcs5Unpad($text)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$pad = ord ( $text &#123;strlen ( $text ) - 1&#125; );<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ($pad &gt; strlen ( $text ))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (strspn ( $text, chr ( $pad ), strlen ( $text ) - $pad ) != $pad)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return substr ( $text, 0, - 1 * $pad );<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&#125;</div></div><br/>Tags - <a href="blog.jiqila.com/tags/android/" rel="tag">android</a> , <a href="blog.jiqila.com/tags/des/" rel="tag">des</a> , <a href="blog.jiqila.com/tags/base64/" rel="tag">base64</a> , <a href="blog.jiqila.com/tags/%25E5%258A%25A0%25E5%25AF%2586/" rel="tag">加密</a> , <a href="blog.jiqila.com/tags/%25E8%25A7%25A3%25E5%25AF%2586/" rel="tag">解密</a>
]]>
</description>
</item><item>
<link>blog.jiqila.com/post/274/</link>
<title><![CDATA[让你开发的Android程序支持多语言]]></title> 
<author>袁旭东 &lt;&gt;</author>
<category><![CDATA[WAP/3G/手机]]></category>
<pubDate>Wed, 21 Sep 2011 14:48:45 +0000</pubDate> 
<guid>blog.jiqila.com/post/274/</guid> 
<description>
<![CDATA[ 
	　　在开发Android程序时，很可能您想要您的用户群不止是简体中文用户，很可能还有英语用户或者繁体中文用户。这时候，我们就需要让Android程序支持多语言了，并且程序会根据系统的当前语言来自动转换程序的显示语言。<br/><br/>　　下面我就以创建缺省语言为英语，另外支持简体中文的Android程序为例，说一下Android的多语言支持。<br/><br/>　　首先，在res目录下建立values-zh-rCN目录，并新建一个名为strings.xml文件。此文件将存储简体中文字符串资源。<br/><br/>　　然后，将res目录下的values目录下的string.xml中的内容复制出来，假定文件内容为：<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content">&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;<br/>&lt;resources&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;string name=&quot;app_name&quot;&gt;<span style="color: #FF0000;">Seller Assistant</span>&lt;/string&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;string name=&quot;exit_msg_title&quot;&gt;<span style="color: #FF0000;">Tips</span>&lt;/string&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;string name=&quot;msg_cancel&quot;&gt;<span style="color: #FF0000;">Cancel</span>&lt;/string&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;string name=&quot;msg_OK&quot;&gt;<span style="color: #FF0000;">OK</span>&lt;/string&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;string name=&quot;msg_exit_content&quot;&gt;<span style="color: #FF0000;">Do you want to quit Seller Assistant?</span>&lt;/string&gt;<br/>&lt;/resources&gt;</div></div><br/><br/>　　复制后，将标签值翻译成简体中文，修改后内容如下：<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content">&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;<br/>&lt;resources&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;string name=&quot;app_name&quot;&gt;<span style="color: #FF0000;">淘宝卖家助理</span>&lt;/string&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;string name=&quot;exit_msg_title&quot;&gt;<span style="color: #FF0000;">温馨提示</span>&lt;/string&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;string name=&quot;msg_cancel&quot;&gt;<span style="color: #FF0000;">取消</span>&lt;/string&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;string name=&quot;msg_OK&quot;&gt;<span style="color: #FF0000;">确定</span>&lt;/string&gt;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;string name=&quot;msg_exit_content&quot;&gt;<span style="color: #FF0000;">您确认退出卖家助理吗？</span>&lt;/string&gt;<br/>&lt;/resources&gt;</div></div><br/><br/>　　应该可以注意到，修改的只是红色的部分，标签的name不要修改。<br/><br/>　　最后，您只要在您的Android程序中使用这些字符串资源id就可以了。例如程序中按返回按键时显示的确认退出对话框，代码如下：<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content">@Override<br/>public boolean onKeyDown(int keyCode, KeyEvent event)<br/>&#123;<br/>&nbsp;&nbsp;if(keyCode == KeyEvent.KEYCODE_BACK)<br/>&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;// 退出时提示确认是否退出<br/>&nbsp;&nbsp;&nbsp;&nbsp;showExitMessage(R.string.msg_exit_content);<br/>&nbsp;&nbsp;&nbsp;&nbsp;return true;<br/>&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;return super.onKeyDown(keyCode, event);<br/>&#125;<br/><br/><br/>/**<br/> * 退出App时提示窗口<br/> * @param msg 提示文字信息<br/> */<br/>private void showExitMessage(int msg_id)<br/>&#123;<br/>&nbsp;&nbsp;new AlertDialog.Builder(this)<br/>&nbsp;&nbsp;.setTitle(R.string.exit_msg_title)<br/>&nbsp;&nbsp;.setMessage(msg_id)<br/>&nbsp;&nbsp;.setPositiveButton(R.string.msg_OK, new DialogInterface.OnClickListener()<br/>&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;public void onClick(DialogInterface dialoginterface, int i)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;finish();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&#125;)<br/>&nbsp;&nbsp;.setNegativeButton(R.string.msg_cancel, new DialogInterface.OnClickListener()<br/>&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;public void onClick(DialogInterface dialoginterface, int i)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&#125;).show();<br/>&#125;</div></div><br/><br/>　　这样，您开发的Android程序就支持多语言了。<br/><br/><br/>Tags - <a href="blog.jiqila.com/tags/android/" rel="tag">android</a> , <a href="blog.jiqila.com/tags/%25E5%25A4%259A%25E8%25AF%25AD%25E8%25A8%2580/" rel="tag">多语言</a>
]]>
</description>
</item><item>
<link>blog.jiqila.com/post/272/</link>
<title><![CDATA[FreeBSD 9.0 beta2发布了]]></title> 
<author>袁旭东 &lt;&gt;</author>
<category><![CDATA[Linux/Unix系统]]></category>
<pubDate>Fri, 09 Sep 2011 14:05:42 +0000</pubDate> 
<guid>blog.jiqila.com/post/272/</guid> 
<description>
<![CDATA[ 
	　　作为一名FreeBSD的忠实粉丝，自开始使用FreeBSD那一刻起，就始终专注着FreeBSD。我的所有服务器，包括开发服务器也都是安装着不同版本的FreeBSD，并且它们都稳定而高效地运行着。特别是生产服务器，已经稳定运行两年了，FreeBSD是一个非常值得信赖的服务器操作系统。<br/><br/>　　随着FreeBSD 9.0 beta版本的发布，FreeBSD为我们带来了很多新的特性，我摘抄如下：<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content">将ZFS作为默认的文件系统；<br/>SSD TRIM 支持；<br/>802.11n 高流量支持；<br/>更多的ATA/CAM 改进；<br/>PCI热插拔支持；<br/>S4休眠支持；<br/>Xen dom0支持；<br/>重新启动更快，等等</div></div><br/><br/>　　自FreeBSD 9.0开始，FreeBSD开始使用了一种新的安装程序——BSDInstall，较之前的sysinstall有什么变化呢，趁放假期间，我下载下来FreeBSD 9.0 beta2安装体验一下。<br/><br/>　　FreeBSD 9.0正式版或许会在今年10月份发布吧，我们还是耐心等待吧。到时候可以再安装一台FreeBSD 9.0的开发服务器了。<br/><br/><br/>Tags - <a href="blog.jiqila.com/tags/freebsd/" rel="tag">freebsd</a>
]]>
</description>
</item><item>
<link>blog.jiqila.com/post/271/</link>
<title><![CDATA[Android 获取网页内容]]></title> 
<author>袁旭东 &lt;&gt;</author>
<category><![CDATA[WAP/3G/手机]]></category>
<pubDate>Thu, 01 Sep 2011 21:53:34 +0000</pubDate> 
<guid>blog.jiqila.com/post/271/</guid> 
<description>
<![CDATA[ 
	　　想要开发一个与网站互动的Android程序，首先就是要能访问网页并获取返回的内容。访问网页有两种方式，即GET和POST。首先说一下GET，代码如下：<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content"><span style="color: #FF0000;">HttpGet httpRequest = new HttpGet(&quot;http://blog.jiqila.com/index.php&quot;);</span><br/>try<br/>&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;HttpResponse httpResponse = new DefaultHttpClient().execute(httpRequest);<br/>&nbsp;&nbsp;&nbsp;&nbsp;if(httpResponse.getStatusLine().getStatusCode() == 200)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String strResult = EntityUtils.toString(httpResponse.getEntity());<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;textViewInfo.setText(strResult);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;else<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;textViewInfo.setText(httpResponse.getStatusLine().toString());<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&#125;<br/>catch (ClientProtocolException e)<br/>&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;textViewInfo.setText(e.getMessage().toString());<br/>&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br/>&#125;<br/>catch (IOException e)<br/>&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;textViewInfo.setText(e.getMessage().toString());<br/>&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br/>&#125;<br/>catch (Exception e)<br/>&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;textViewInfo.setText(e.getMessage().toString());<br/>&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br/>&#125;</div></div><br/><br/>　　至于 POST 方式，与 GET 方式类似，只是将 HttpGet 类改为 HttpPost 类即可。不过，单单只有这些访问网络的代码还是不能真正的访问网络，还需要为你的程序设置访问网络的权限。此时就需要在 AndroidManifest.xml 文件中的&lt;manifest&gt;标签内加入下面的代码：<br/><div class="quote"><div class="quote-title">引用</div><div class="quote-content">&lt;uses-permission android:name=&quot;android.permission.INTERNET&quot;&gt;&lt;/uses-permission&gt;</div></div><br/><br/>　　这样，你的程序就能正常访问网络了。而在制作成的安装包apk在安装时，Android系统也会以红色的字提示你，此程序有完全访问网络的权限。<br/><br/>　　下面是演示程序的完整代码：<a href="attachment.php?fid=79">点击这里下载文件</a><br/><br/><br/>Tags - <a href="blog.jiqila.com/tags/android/" rel="tag">android</a> , <a href="blog.jiqila.com/tags/get/" rel="tag">get</a> , <a href="blog.jiqila.com/tags/post/" rel="tag">post</a>
]]>
</description>
</item><item>
<link>blog.jiqila.com/post/270/</link>
<title><![CDATA[很久没有更新了]]></title> 
<author>袁旭东 &lt;&gt;</author>
<category><![CDATA[心情随笔]]></category>
<pubDate>Sat, 27 Aug 2011 06:54:07 +0000</pubDate> 
<guid>blog.jiqila.com/post/270/</guid> 
<description>
<![CDATA[ 
	　　自从换了新工作后，几乎就没有时间更新博客了。除了工作上比较忙之外，就是最近在设计和开发一个全新的快速开发框架，暂时命名为Jiqila Quick Framework。计划总共会提供两个版本，分别是.NET版和PHP版。等熟练Android开发后，可能会出一个Android版。<br/><br/>　　本来计划先开发.NET版，由于服务器暂时还不支持.NET，并且最近网站开发的活儿比较多，所以就决定先开发PHP版本。边工作，边开发和改进，也算是为.NET版本积累经验了。<br/><br/><br/>Tags - <a href="blog.jiqila.com/tags/jqf/" rel="tag">jqf</a> , <a href="blog.jiqila.com/tags/.net/" rel="tag">.net</a> , <a href="blog.jiqila.com/tags/php/" rel="tag">php</a> , <a href="blog.jiqila.com/tags/android/" rel="tag">android</a>
]]>
</description>
</item>
</channel>
</rss>
