<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/rss.xsl"?>
<rss version="2.0">
  <channel>
    <title>IT Technology Network</title>
    <link>http://itnewsvendor.appspot.com/</link>
    <description>IT Technology Network</description>
    <language>zh</language>
    <copyright>SearchFull</copyright>
    <generator>SearchFull</generator>
    <docs>http://backend.userland.com/rss</docs>
    <image>
      <url>http://itnewsvendor.appspot.com/images/logo.gif</url>
      <title>IT Technology Network</title>
      <link>http://itnewsvendor.appspot.com/</link>
    </image>
    <item>
      <title>Emacs + Clojure配置的几个Tip</title>
      <link>http://itnewsvendor.appspot.com/6517045-emacs_clojure_%E9%85%8D%E7%BD%AE.html</link>
      <description>&lt;div&gt;   &lt;br /&gt;
    很久没更新博客了，在北京工作，忙碌并且充实。目前来说，Clojure最好的开发编辑器应该是Emacs +    &lt;a href="http://common-lisp.net/project/slime/doc/html/"&gt;Slime&lt;/a&gt;的组合，利用   &lt;a href="https://github.com/technomancy/swank-clojure"&gt;swank-clojure&lt;/a&gt;这个项目，加上clojure-mode，可以完美地运行slime。编译、运行、跳转、文档和引用查看甚至   &lt;a href="http://georgejahad.com/clojure/swank-cdt.html"&gt;debug&lt;/a&gt;都可以搞定。具体配置恕不重复，看swank-clojure的文档即可自己安装起来，或者这篇   &lt;a href="http://sunng.info/blog/2011/09/beginning-emacs-for-clojure/"&gt;中文博客&lt;/a&gt;，   &lt;a href="http://www.cnblogs.com/darkluck99/archive/2012/02/20/2360216.html"&gt;windows上配置&lt;/a&gt;。   &lt;br /&gt;
   &lt;br /&gt;
    分享几个Tip，也期待大家分享你们的使用心得。   &lt;br /&gt;
   &lt;br /&gt;
    首先是自动在打开clj后缀文件的时候启动执行clojure-jack-in与slime连接，可以在emacs配置里加上个callback：   &lt;br /&gt;
   &lt;br /&gt;   &lt;div&gt;(eval-after-load &amp;quot;clojure-mode&amp;quot;     &lt;br /&gt;  &amp;apos;(progn     &lt;br /&gt;     (require &amp;apos;slime)     &lt;br /&gt;     (require &amp;apos;clojure-mode)     &lt;br /&gt;     (unless (slime-connected-p)     &lt;br /&gt;       (save-excursion (clojure-jack-in)))))&lt;/div&gt;
    这样在打开clj为后缀的文件的时候，将自动启动clojure-mode执行clojure-jack-in函数并且连接slime。   &lt;br /&gt;   &lt;br /&gt;    将clj后缀的文件自动关联到clojure-mode:   &lt;br /&gt;
   &lt;div&gt;(setq auto-mode-alist (cons &amp;apos;(&amp;quot;\\.clj$&amp;quot; . clojure-mode) auto-mode-alist))&lt;/div&gt;
    通常来说如果你是利用   &lt;a href="http://marmalade-repo.org/"&gt;marmalade&lt;/a&gt;安装的，会自动关联的。   &lt;br /&gt;   &lt;br /&gt;    另外，启动自动匹配括号、字符串引号等的paredit模式一定要启动：   &lt;br /&gt;   &lt;div&gt;(defun paredit-mode-enable () (paredit-mode 1))     &lt;br /&gt;(add-hook &amp;apos;clojure-mode-hook &amp;apos;paredit-mode-enable)     &lt;br /&gt;(add-hook &amp;apos;clojure-test-mode-hook &amp;apos;paredit-mode-enable)&lt;/div&gt;   &lt;br /&gt;
   在使用clojure-mode或者clojure-test-mode的时候自动启用paredit模式，括号再也不是问题。括号匹配提示一般是开启的，如果没有，强制开启：   &lt;br /&gt;   &lt;br /&gt;   &lt;div&gt;;;    显示括号匹配     &lt;br /&gt;(show-paren-mode t)     &lt;br /&gt;(setq show-paren-style &amp;apos;parentheses)&lt;/div&gt;   &lt;br /&gt;    slime更多配置，启用IO重定向（多线程IO输出都定向到SLIME repl）以及设置通讯字符编码等：   &lt;br /&gt;   &lt;br /&gt;   &lt;div&gt;(eval-after-load &amp;quot;slime&amp;quot;     &lt;br /&gt;  &amp;apos;(progn     &lt;br /&gt;     (slime-setup &amp;apos;(slime-repl slime-fuzzy))     &lt;br /&gt;     ;;(setq slime-truncate-lines t)     &lt;br /&gt;     (setq  swank:*globally-redirect-io*  t)     &lt;br /&gt;     ;; (setq slime-complete-symbol-function &amp;apos; slime-fuzzy-complete-symbol)     &lt;br /&gt;     (setq slime-net-coding-system &amp;apos;utf-8-unix)))&lt;/div&gt;   &lt;br /&gt;    细心的朋友可能注意到我注释了slime-fuzzy-complete的配置，这是一个支持更好的自动补全功能的SLIME插件（可以用缩写来自动补全），可惜在我机器上没有尝试配置成功，有兴趣你可以尝试下。   &lt;br /&gt;   &lt;br /&gt;    在REPL里支持语法高亮，一定要配置上：   &lt;br /&gt;   &lt;br /&gt;   &lt;div&gt;(add-hook &amp;apos;slime-repl-mode-hook     &lt;br /&gt;          (defun clojure-mode-slime-font-lock ()     &lt;br /&gt;            (require &amp;apos;clojure-mode)     &lt;br /&gt;            (let (font-lock-mode)     &lt;br /&gt;              (clojure-mode-font-lock-setup))))&lt;/div&gt;   &lt;br /&gt;    单独在clojure-mode（在其他mode里这些快捷键不会起作用）里配置快捷键可以这样:   &lt;br /&gt;   &lt;div&gt;(eval-after-load &amp;quot;clojure-mode&amp;quot;     &lt;br /&gt;  &amp;apos;(progn     &lt;br /&gt;     (require &amp;apos;slime)     &lt;br /&gt;     (require &amp;apos;clojure-mode)     &lt;br /&gt;     (define-key clojure-mode-map (kbd &amp;quot;M-/&amp;quot;)  (quote slime-complete-symbol))     &lt;br /&gt;     (define-key clojure-mode-map (kbd &amp;quot;C-c s&amp;quot;)  (quote slime-selector)))&lt;/div&gt;   &lt;br /&gt;   例如我这里将M-/作为自动补全的快捷键，因为meta键在我的Mac机器上设置为command键，因此自动补全的操作习惯就跟Eclipse类似。而   &lt;strong&gt;slime-selector&lt;/strong&gt;是一个非常有用的函数，用来跳转到slime的一系列buffer，因此我绑定了C-c s快捷键。   &lt;br /&gt;   &lt;br /&gt;    额外一提，在Mac osx下，将command作为meta键:   &lt;div&gt;;;; I prefer cmd key   for meta     &lt;br /&gt;(setq mac-option-key-is-meta nil     &lt;br /&gt;      mac-command-key-is-meta t     &lt;br /&gt;      mac-command-modifier &amp;apos;meta     &lt;br /&gt;      mac-option-modifier &amp;apos;none)&lt;/div&gt;   &lt;br /&gt;    最后，期待大家不吝分享你的心得。   &lt;br /&gt;    &lt;/div&gt;</description>
      <category>blogjava</category>
      <guid isPermaLink="true">http://itnewsvendor.appspot.com/6517045-emacs_clojure_%E9%85%8D%E7%BD%AE.html</guid>
      <pubDate>Mon, 21 May 2012 02:32:06 UTC</pubDate>
    </item>
    <item>
      <title>Java DES文件加密解密  javax.crypto.BadPaddingException:</title>
      <link>http://itnewsvendor.appspot.com/6508051-java_des_%E6%96%87%E4%BB%B6.html</link>
      <description>&lt;div&gt;   &lt;div&gt;本工具类经过测试可用，之前写的没有使用CipherInputStream和CipherOutputStream，生成的加密文件与源文件大小不一致，加密时没有问题，解密时总是抛出如下异常：     &lt;br /&gt;     &lt;div&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;   Exception in thread    &amp;quot;   main   &amp;quot;    javax   .   crypto   .   BadPaddingException   :    Given final block not properly padded        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;    at com   .   sun   .   crypto   .   provider   .   SunJCE_f   .   b(DashoA13   *..   )        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;    at com   .   sun   .   crypto   .   provider   .   SunJCE_f   .   b(DashoA13   *..   )        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;    at com   .   sun   .   crypto   .   provider   .   AESCipher   .   engineDoFinal(DashoA13   *..   )        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;    at javax   .   crypto   .   Cipher   .   doFinal(DashoA13   *..   )&lt;/div&gt;     &lt;br /&gt;     &lt;br /&gt;其中BASE64底层依赖库没有使用SUN的，而是下载的“javabase64-1.3.1.jar”     &lt;br /&gt;     &lt;br /&gt;DESUtils.java     &lt;br /&gt;     &lt;div&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;   package    demo.security;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;   import    java.io.File;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;   import    java.io.FileInputStream;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;   import    java.io.FileOutputStream;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;   import    java.io.InputStream;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;   import    java.io.OutputStream;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;   import    java.security.Key;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;   import    java.security.SecureRandom;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;   import    javax.crypto.Cipher;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;   import    javax.crypto.CipherInputStream;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;   import    javax.crypto.CipherOutputStream;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;   import    javax.crypto.KeyGenerator;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;   import    javax.crypto.SecretKey;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;   import    javax.crypto.SecretKeyFactory;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;   import    javax.crypto.spec.DESKeySpec;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;        &lt;br /&gt;        &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif"&gt;&lt;/img&gt;        &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif"&gt;&lt;/img&gt;   /** */       /**             &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt; * &amp;lt;p&amp;gt;         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt; * DES加密解密工具包         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt; * &amp;lt;/p&amp;gt;         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt; *          &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt; *     @author     IceWee         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt; * @date 2012-5-19         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt; *     @version     1.0         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif"&gt;&lt;/img&gt;     */           &lt;br /&gt;        &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif"&gt;&lt;/img&gt;        &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif"&gt;&lt;/img&gt;   public       class    DESUtils            &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;       {         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;             &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        private         static         final     String ALGORITHM     =         &amp;quot;    DES    &amp;quot;    ;         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        private         static         final         int     CACHE_SIZE     =         1024    ;         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;         &lt;br /&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;        /** */         /**               &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;p&amp;gt;          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * 生成随机密钥          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;/p&amp;gt;          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *           &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *      @return               &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *      @throws      Exception          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;          */             &lt;br /&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;        public         static     String getSecretKey()     throws     Exception              &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;         {          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;             return      getSecretKey(     null     );          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;    }             &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;             &lt;br /&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;        /** */         /**               &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;p&amp;gt;          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * 生成密钥          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;/p&amp;gt;          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *           &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *      @param      seed 密钥种子          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *      @return               &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *      @throws      Exception          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;          */             &lt;br /&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;        public         static     String getSecretKey(String seed)     throws     Exception              &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;         {          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        SecureRandom secureRandom;          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;             if      (seed      !=           null           &amp;amp;&amp;amp;           !     &amp;quot;&amp;quot;     .equals(seed))          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            secureRandom      =           new      SecureRandom(seed.getBytes());          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;             else               &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            secureRandom      =           new      SecureRandom();          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        KeyGenerator keyGenerator      =      KeyGenerator.getInstance(ALGORITHM);          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        keyGenerator.init(secureRandom);          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        SecretKey secretKey      =      keyGenerator.generateKey();          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;             return      Base64Utils.encode(secretKey.getEncoded());          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;    }             &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;             &lt;br /&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;        /** */         /**               &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;p&amp;gt;          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * 加密          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;/p&amp;gt;          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *           &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *      @param      data          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *      @param      key          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *      @return               &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *      @throws      Exception          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;          */             &lt;br /&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;        public         static         byte    [] encrypt(    byte    [] data, String key)     throws     Exception              &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;         {          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        Key k      =      toKey(Base64Utils.decode(key));          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        Cipher cipher      =      Cipher.getInstance(ALGORITHM);          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        cipher.init(Cipher.ENCRYPT_MODE, k);          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;             return      cipher.doFinal(data);          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;    }             &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;             &lt;br /&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;        /** */         /**               &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;p&amp;gt;          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * 文件加密          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;/p&amp;gt;          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *           &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *      @param      key          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *      @param      sourceFilePath          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *      @param      destFilePath          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *      @throws      Exception          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;          */             &lt;br /&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;        public         static         void     encryptFile(String key, String sourceFilePath, String destFilePath)     throws     Exception              &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;         {          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        File sourceFile      =           new      File(sourceFilePath);          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        File destFile      =           new      File(destFilePath);           &lt;br /&gt;          &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;          &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;             if      (sourceFile.exists()      &amp;amp;&amp;amp;      sourceFile.isFile())                &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;           {           &lt;br /&gt;           &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;           &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;                  if       (      !      destFile.getParentFile().exists())                  &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;             {            &lt;br /&gt;            &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;                destFile.getParentFile().mkdirs();            &lt;br /&gt;            &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;            }                 &lt;br /&gt;           &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            destFile.createNewFile();           &lt;br /&gt;           &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            InputStream in       =             new       FileInputStream(sourceFile);           &lt;br /&gt;           &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            OutputStream out       =             new       FileOutputStream(destFile);           &lt;br /&gt;           &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            Key k       =       toKey(Base64Utils.decode(key));           &lt;br /&gt;           &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            Cipher cipher       =       Cipher.getInstance(ALGORITHM);           &lt;br /&gt;           &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            cipher.init(Cipher.ENCRYPT_MODE, k);           &lt;br /&gt;           &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            CipherInputStream cin       =             new       CipherInputStream(in, cipher);           &lt;br /&gt;           &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;                  byte      [] cache       =             new             byte      [CACHE_SIZE];           &lt;br /&gt;           &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;                  int       nRead       =             0      ;           &lt;br /&gt;           &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;           &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;                  while       ((nRead       =       cin.read(cache))       !=             -      1      )                  &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;             {            &lt;br /&gt;            &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;                out.write(cache,        0       , nRead);            &lt;br /&gt;            &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;                out.flush();            &lt;br /&gt;            &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;            }                 &lt;br /&gt;           &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            out.close();           &lt;br /&gt;           &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            cin.close();           &lt;br /&gt;           &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            in.close();           &lt;br /&gt;           &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;        }               &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;    }             &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;             &lt;br /&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;        /** */         /**               &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;p&amp;gt;          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * 解密          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;/p&amp;gt;          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *           &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *      @param      data          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *      @param      key          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *      @return               &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *      @throws      Exception          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;          */             &lt;br /&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;        public         static         byte    [] decrypt(    byte    [] data, String key)     throws     Exception              &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;         {          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        Key k      =      toKey(Base64Utils.decode(key));          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        Cipher cipher      =      Cipher.getInstance(ALGORITHM);          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        cipher.init(Cipher.DECRYPT_MODE, k);          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;             return      cipher.doFinal(data);          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;    }             &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;             &lt;br /&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;        /** */         /**               &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;p&amp;gt;          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * 文件解密          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;/p&amp;gt;          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *           &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *      @param      key          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *      @param      sourceFilePath          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *      @param      destFilePath          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *      @throws      Exception          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;          */             &lt;br /&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;        public         static         void     decryptFile(String key, String sourceFilePath, String destFilePath)     throws     Exception              &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;         {          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        File sourceFile      =           new      File(sourceFilePath);          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        File destFile      =           new      File(destFilePath);           &lt;br /&gt;          &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;          &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;             if      (sourceFile.exists()      &amp;amp;&amp;amp;      sourceFile.isFile())                &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;           {           &lt;br /&gt;           &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;           &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;                  if       (      !      destFile.getParentFile().exists())                  &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;             {            &lt;br /&gt;            &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;                destFile.getParentFile().mkdirs();            &lt;br /&gt;            &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;            }                 &lt;br /&gt;           &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            destFile.createNewFile();           &lt;br /&gt;           &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            InputStream in       =             new       FileInputStream(sourceFile);           &lt;br /&gt;           &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            OutputStream out       =             new       FileOutputStream(destFile);           &lt;br /&gt;           &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            Key k       =       toKey(Base64Utils.decode(key));           &lt;br /&gt;           &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            Cipher cipher       =       Cipher.getInstance(ALGORITHM);           &lt;br /&gt;           &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            cipher.init(Cipher.DECRYPT_MODE, k);           &lt;br /&gt;           &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            CipherOutputStream cout       =             new       CipherOutputStream(out, cipher);           &lt;br /&gt;           &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;                  byte      [] cache       =             new             byte      [CACHE_SIZE];           &lt;br /&gt;           &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;                  int       nRead       =             0      ;           &lt;br /&gt;           &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;           &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;                  while       ((nRead       =       in.read(cache))       !=             -      1      )                  &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;             {            &lt;br /&gt;            &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;                cout.write(cache,        0       , nRead);            &lt;br /&gt;            &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;                cout.flush();            &lt;br /&gt;            &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;            }                 &lt;br /&gt;           &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            cout.close();           &lt;br /&gt;           &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            out.close();           &lt;br /&gt;           &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            in.close();           &lt;br /&gt;           &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;        }               &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;    }             &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;         &lt;br /&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;        /** */         /**               &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;p&amp;gt;          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * 转换密钥          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;/p&amp;gt;          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *           &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *      @param      key          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *      @return               &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *      @throws      Exception          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;          */             &lt;br /&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;        private         static     Key toKey(    byte    [] key)     throws     Exception              &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;         {          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        DESKeySpec dks      =           new      DESKeySpec(key);          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        SecretKeyFactory keyFactory      =      SecretKeyFactory.getInstance(ALGORITHM);          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        SecretKey secretKey      =      keyFactory.generateSecret(dks);          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;             return      secretKey;          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;    }             &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;             &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif"&gt;&lt;/img&gt;}           &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;&lt;/div&gt;     &lt;br /&gt;Base64Utils.java     &lt;br /&gt;     &lt;div&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;   package    demo.security;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;   import    java.io.ByteArrayInputStream;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;   import    java.io.ByteArrayOutputStream;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;   import    java.io.File;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;   import    java.io.FileInputStream;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;   import    java.io.FileOutputStream;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;   import    java.io.InputStream;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;   import    java.io.OutputStream;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;   import    it.sauronsoftware.base64.Base64;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;        &lt;br /&gt;        &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif"&gt;&lt;/img&gt;        &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif"&gt;&lt;/img&gt;   /** */       /**             &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt; * &amp;lt;p&amp;gt;         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt; * BASE64编码解码工具包         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt; * &amp;lt;/p&amp;gt;         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt; * &amp;lt;p&amp;gt;         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt; * 依赖javabase64-1.3.1.jar         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt; * &amp;lt;/p&amp;gt;         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt; *          &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt; *     @author     IceWee         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt; * @date 2012-5-19         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt; *     @version     1.0         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif"&gt;&lt;/img&gt;     */           &lt;br /&gt;        &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif"&gt;&lt;/img&gt;        &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif"&gt;&lt;/img&gt;   public       class    Base64Utils            &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;       {         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;         &lt;br /&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;        /** */         /**               &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * 文件读取缓冲区大小          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;          */             &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        private         static         final         int     CACHE_SIZE     =         1024    ;         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;             &lt;br /&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;        /** */         /**               &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;p&amp;gt;          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * BASE64字符串解码为二进制数据          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;/p&amp;gt;          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *           &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *      @param      base64          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *      @return               &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *      @throws      Exception          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;          */             &lt;br /&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;        public         static         byte    [] decode(String base64)     throws     Exception              &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;         {          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;             return      Base64.decode(base64.getBytes());          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;    }             &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;             &lt;br /&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;        /** */         /**               &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;p&amp;gt;          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * 二进制数据编码为BASE64字符串          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;/p&amp;gt;          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *           &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *      @param      bytes          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *      @return               &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *      @throws      Exception          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;          */             &lt;br /&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;        public         static     String encode(    byte    [] bytes)     throws     Exception              &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;         {          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;             return           new      String(Base64.encode(bytes));          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;    }             &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;             &lt;br /&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;        /** */         /**               &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;p&amp;gt;          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * 将文件编码为BASE64字符串          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;/p&amp;gt;          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;p&amp;gt;          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * 大文件慎用，可能会导致内存溢出          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;/p&amp;gt;          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *           &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *      @param      filePath 文件绝对路径          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *      @return               &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *      @throws      Exception          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;          */             &lt;br /&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;        public         static     String encodeFile(String filePath)     throws     Exception              &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;         {          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;             byte     [] bytes      =      fileToByte(filePath);          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;             return      encode(bytes);          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;    }             &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;             &lt;br /&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;        /** */         /**               &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;p&amp;gt;          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * BASE64字符串转回文件          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;/p&amp;gt;          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *           &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *      @param      filePath 文件绝对路径          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *      @param      base64 编码字符串          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *      @throws      Exception          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;          */             &lt;br /&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;        public         static         void     decodeToFile(String filePath, String base64)     throws     Exception              &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;         {          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;             byte     [] bytes      =      decode(base64);          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        byteArrayToFile(bytes, filePath);          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;    }             &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;             &lt;br /&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;        /** */         /**               &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;p&amp;gt;          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * 文件转换为二进制数组          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;/p&amp;gt;          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *           &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *      @param      filePath 文件路径          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *      @return               &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *      @throws      Exception          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;          */             &lt;br /&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;        public         static         byte    [] fileToByte(String filePath)     throws     Exception              &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;         {          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;             byte     [] data      =           new           byte     [     0     ];          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        File file      =           new      File(filePath);          &lt;br /&gt;          &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;          &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;             if      (file.exists())                &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;           {           &lt;br /&gt;           &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            FileInputStream in       =             new       FileInputStream(file);           &lt;br /&gt;           &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            ByteArrayOutputStream out       =             new       ByteArrayOutputStream(      2048      );           &lt;br /&gt;           &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;                  byte      [] cache       =             new             byte      [CACHE_SIZE];           &lt;br /&gt;           &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;                  int       nRead       =             0      ;           &lt;br /&gt;           &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;           &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;                  while       ((nRead       =       in.read(cache))       !=             -      1      )                  &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;             {            &lt;br /&gt;            &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;                out.write(cache,        0       , nRead);            &lt;br /&gt;            &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;                out.flush();            &lt;br /&gt;            &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;            }                 &lt;br /&gt;           &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            out.close();           &lt;br /&gt;           &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            in.close();           &lt;br /&gt;           &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            data       =       out.toByteArray();           &lt;br /&gt;           &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;         }               &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;             return      data;          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;    }             &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;             &lt;br /&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;        /** */         /**               &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;p&amp;gt;          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * 二进制数据写文件          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;/p&amp;gt;          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *           &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *      @param      bytes 二进制数据          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *      @param      filePath 文件生成目录          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;          */             &lt;br /&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;        public         static         void     byteArrayToFile(    byte    [] bytes, String filePath)     throws     Exception              &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;         {          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        InputStream in      =           new      ByteArrayInputStream(bytes);             &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        File destFile      =           new      File(filePath);          &lt;br /&gt;          &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;          &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;             if      (     !     destFile.getParentFile().exists())                &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;           {           &lt;br /&gt;           &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            destFile.getParentFile().mkdirs();           &lt;br /&gt;           &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;        }               &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        destFile.createNewFile();          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        OutputStream out      =           new      FileOutputStream(destFile);          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;             byte     [] cache      =           new           byte     [CACHE_SIZE];          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;             int      nRead      =           0     ;          &lt;br /&gt;          &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;          &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;             while      ((nRead      =      in.read(cache))      !=           -     1     )                &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;           {              &lt;br /&gt;           &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            out.write(cache,       0      , nRead);           &lt;br /&gt;           &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            out.flush();           &lt;br /&gt;           &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;        }               &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        out.close();          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        in.close();          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;    }             &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;             &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;             &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif"&gt;&lt;/img&gt;}           &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;&lt;/div&gt;                                     &lt;br /&gt;     &lt;br /&gt;DESTester.java     &lt;br /&gt;     &lt;div&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;   package    demo.security;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;        &lt;br /&gt;        &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif"&gt;&lt;/img&gt;        &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif"&gt;&lt;/img&gt;   public       class    DESTester            &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;       {         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        static     String key;         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;             &lt;br /&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;        static                  &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;         {          &lt;br /&gt;          &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;          &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;             try                     &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;           {           &lt;br /&gt;           &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            key       =       DESUtils.getSecretKey();           &lt;br /&gt;           &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;           &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;        }           catch      (Exception e)                &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;           {           &lt;br /&gt;           &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            e.printStackTrace();           &lt;br /&gt;           &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;        }               &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;    }             &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;             &lt;br /&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;        public         static         void     main(String[] args)     throws     Exception              &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;         {          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;             long      begin      =      System.currentTimeMillis();          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        encryptFile();          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        decryptFile();          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        test();          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;             long      end      =      System.currentTimeMillis();          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        System.err.println(     &amp;quot;     耗时：     &amp;quot;           +      (end     -     begin)     /     1000           +           &amp;quot;     秒          &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;     &amp;quot;     );          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;    }             &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;             &lt;br /&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;        static         void     encryptFile()     throws     Exception              &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;         {          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        String sourceFilePath      =           &amp;quot;     D:/demo.mp4     &amp;quot;     ;          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        String destFilePath      =           &amp;quot;     D:/demo_encrypted.mp4     &amp;quot;     ;          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        DESUtils.encryptFile(key, sourceFilePath, destFilePath);          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;    }             &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;             &lt;br /&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;        static         void     decryptFile()     throws     Exception              &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;         {          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        String sourceFilePath      =           &amp;quot;     D:/demo_encrypted.mp4     &amp;quot;     ;          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        String destFilePath      =           &amp;quot;     D:/demo_decrypted.mp4     &amp;quot;     ;          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        DESUtils.decryptFile(key, sourceFilePath, destFilePath);          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;    }             &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;             &lt;br /&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;        static         void     test()     throws     Exception              &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;         {          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        String source      =           &amp;quot;     这是一行测试DES加密/解密的文字，你看完也等于没看，是不是啊？！     &amp;quot;     ;          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        System.err.println(     &amp;quot;     原文:\t     &amp;quot;           +      source);          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;             byte     [] inputData      =      source.getBytes();          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        inputData      =      DESUtils.encrypt(inputData, key);          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        System.err.println(     &amp;quot;     加密后:\t     &amp;quot;           +      Base64Utils.encode(inputData));          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;             byte     [] outputData      =      DESUtils.decrypt(inputData, key);          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        String outputStr      =           new      String(outputData);          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        System.err.println(     &amp;quot;     解密后:\t     &amp;quot;           +      outputStr);          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;    }             &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif"&gt;&lt;/img&gt;}           &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;&lt;/div&gt;     &lt;br /&gt;&lt;/div&gt; 
 &lt;/div&gt;</description>
      <category>blogjava</category>
      <guid isPermaLink="true">http://itnewsvendor.appspot.com/6508051-java_des_%E6%96%87%E4%BB%B6.html</guid>
      <pubDate>Mon, 21 May 2012 02:32:04 UTC</pubDate>
    </item>
    <item>
      <title>摩托公布4.0升级名单 DROID 3/X2无缘</title>
      <link>http://itnewsvendor.appspot.com/6495077-%E6%91%A9%E6%89%98_%E5%85%AC%E5%B8%83_4.0.html</link>
      <description>&lt;div&gt;





	        &lt;div&gt;





  





&lt;/div&gt;





	        &lt;div&gt;











  





&lt;/div&gt;











			　　    &lt;div&gt;
             &lt;p&gt;在数月沉寂之后，摩托罗拉日前终于正式公布了旗下手机的升级Android 4.0的日程安排，较为遗憾的是，去年才上市的摩托DROID 3以及DROID X2将不会升级4.0系统。根了解，       &lt;strong&gt;摩托旗下的热销机型DROID RAZR以及DROID RAZR MAXX会强现在本季度获得4.0更新，同样会在本季度升级ICS的还包括摩托平板XOOM MZ600&lt;/strong&gt;。&lt;/p&gt;
     &lt;p&gt;除此之外，摩托8.2寸/10.1寸的XYBOARD、智能手机DROID BIONIC、DROID 4等也都会在第三季度升级Android 4.0。&lt;/p&gt;     &lt;p&gt;对于DROID 3以及DROID X2不能升级的原因，摩托解释说，       &lt;strong&gt;升级是为了改善设备以带给用户更好的体验，如果不能达成的话，还不如不升级&lt;/strong&gt;。&lt;/p&gt;
     &lt;p&gt;与此同时，有说法表示认为这两款上市不久的手机（最“旧”的DROID 
X2上市也仅一年）之所以不能升级4.0，主要原因是这两款手机RAM只有512MB，而摩托升级最低需求为1GB 
RAM。如果真的这样，摩托真要努力了，毕竟HTC等对手512MB RAM配置的4.0新机马上都要上市了。&lt;/p&gt;
     &lt;p align="center"&gt;       &lt;img alt="摩托公布4.0升级名单 DROID 3/X2无缘" src="http://www.linuxeden.com/upimg/allimg/120520/110H5I19-0.jpg"&gt;&lt;/img&gt;&lt;/p&gt;
     &lt;p align="center"&gt;       &lt;a href="http://news.mydrivers.com/Img/20120520/2012052008555707.jpg" target="_blank"&gt;         &lt;img alt="摩托公布4.0升级名单 DROID 3/X2无缘" height="381" src="http://www.linuxeden.com/upimg/allimg/120520/110H56458-1.jpg" width="550"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;     &lt;p&gt;
上市仅一年的摩托DROID X2&lt;/p&gt;
文/驱动之家     &lt;p&gt;&lt;/p&gt;




&lt;/div&gt;


			   &lt;div&gt;
     &lt;input name="wurl" type="hidden" value="http://www.linuxeden.com/html/news/20120520/124434.html"&gt;&lt;/input&gt;
     &lt;input name="wtitle" type="hidden" value="摩托公布4.0升级名单 DROID 3/X2无缘"&gt;&lt;/input&gt;
         &lt;input name="wpic" type="hidden" value="http://www.linuxeden.com/upimg/allimg/120520/253_0520110HM609.jpg"&gt;&lt;/input&gt;
&lt;/div&gt;
   &lt;p&gt;
    
&lt;/p&gt;
 

			 











			&lt;/div&gt;</description>
      <category>linux</category>
      <guid isPermaLink="true">http://itnewsvendor.appspot.com/6495077-%E6%91%A9%E6%89%98_%E5%85%AC%E5%B8%83_4.0.html</guid>
      <pubDate>Sun, 20 May 2012 16:31:43 UTC</pubDate>
    </item>
    <item>
      <title>十款优秀的Linux问题跟踪系�</title>
      <link>http://itnewsvendor.appspot.com/6517044-%E4%BC%98%E7%A7%80_linux_%E9%97%AE%E9%A2%98.html</link>
      <description>&lt;div&gt;





	        &lt;div&gt;





  





&lt;/div&gt;





	        &lt;div&gt;











  





&lt;/div&gt;











			　　    &lt;div&gt;
     &lt;td&gt;

&amp;quot;问题跟踪系统能帮助管理和维护问题清单，涵盖了多种不同类型的计算机应用程序，其中最常见的是 bug 跟踪系统。Bug 跟踪系统可帮助开发者跟上报告的软件 bug，同时也可充当某种质量评估工具。其它主要的问题跟踪系统是服务台和帮助台管理软件，帮助企业创建、更新和解决客户报告的问题。问题跟踪系统在开发项目和协作式经营中扮演了十分重要的角色。此类中的       &lt;a href="http://www.linuxlinks.com/article/20120518184813135/IssueTrackingSystems.html" target="_blank"&gt;许多优秀软件采用了开源许可证发布&lt;/a&gt;，如企业级 bug 跟踪系统        &lt;a href="http://www.bugzilla.org/" target="_blank"&gt;Bugzilla&lt;/a&gt;，       &lt;a href="http://www.thebuggenie.com/" target="_blank"&gt;The Bug Genie&lt;/a&gt;，       &lt;a href="http://www.mantisbt.org/" target="_blank"&gt;Mantis&lt;/a&gt;，       &lt;a href="http://trac.edgewall.org/" target="_blank"&gt;Trac&lt;/a&gt; 等。&amp;quot;&lt;/td&gt;

&lt;/div&gt;


			   &lt;div&gt;
     &lt;input name="wurl" type="hidden" value="http://www.linuxeden.com/html/news/20120520/124436.html"&gt;&lt;/input&gt;
     &lt;input name="wtitle" type="hidden" value="十款优秀的Linux问题跟踪系�"&gt;&lt;/input&gt;
         &lt;input name="wpic" type="hidden" value=""&gt;&lt;/input&gt;
&lt;/div&gt;
   &lt;p&gt;
    
&lt;/p&gt;
 

			 











			&lt;/div&gt;</description>
      <category>linux</category>
      <guid isPermaLink="true">http://itnewsvendor.appspot.com/6517044-%E4%BC%98%E7%A7%80_linux_%E9%97%AE%E9%A2%98.html</guid>
      <pubDate>Sun, 20 May 2012 16:31:40 UTC</pubDate>
    </item>
    <item>
      <title>我们需要学习编程吗？</title>
      <link>http://itnewsvendor.appspot.com/6511046-%E6%88%91%E4%BB%AC_%E9%9C%80%E8%A6%81_%E5%AD%A6%E4%B9%A0.html</link>
      <description>&lt;div&gt;





	        &lt;div&gt;





  





&lt;/div&gt;





	        &lt;div&gt;











  





&lt;/div&gt;











			　　    &lt;div&gt;
     &lt;p&gt;&lt;/p&gt;     &lt;p&gt;       &lt;img src="http://www.linuxeden.com/upimg/allimg/120520/11330H529-0.jpg"&gt;&lt;/img&gt;&lt;/p&gt;     &lt;p&gt;&lt;/p&gt;     &lt;p&gt;如今，计算机已经成为我们生活中的必需品，但是，我们真的有必要去学习编程吗？&lt;/p&gt;     &lt;p&gt;对 于编程，相信许多人和我一样，是一种敬而远之的态度。就是说将其视为一项专业的技能，便如同律师、医生、工程师一般，属于专业人士的范围。非专业人士不了 解一行代码对于生活也毫无影响。不过我偶尔还是对编程有些兴趣，特别是在 Codecademy 这样方便的教学工具出现以后，很有兴趣去写行代码。究其原因，可能是因为编程本身是一种创造的过程，也是对思维能力的一种锻炼。&lt;/p&gt;     &lt;p&gt;最近，       &lt;a href="http://www.codinghorror.com/blog/2012/05/please-dont-learn-to-code.html" target="_blank"&gt;Codinghorror 网站&lt;/a&gt;出现一篇文章，叫做“不要学习编程”。作者非常反对“每个人都需要学习编程”的想法。最近，编程热似乎感染到了纽约市长，他在 Twitter 上宣布自己要学习编程。&lt;/p&gt;     &lt;p&gt; &lt;/p&gt;     &lt;p&gt;&lt;/p&gt;     &lt;p&gt;       &lt;img src="http://www.linuxeden.com/upimg/allimg/120520/11330I025-1.png"&gt;&lt;/img&gt;&lt;/p&gt;     &lt;p&gt;&lt;/p&gt;     &lt;p&gt;对此，Jeff Atwood 认为这是一个糟糕的姿态，他讽刺道：&lt;/p&gt;     &lt;blockquote&gt;       &lt;p&gt;如果 Bloomberg 先生真的“学习编码”，我觉得我们得到的结果是：&lt;/p&gt;       &lt;pre&gt;10 PRINT &amp;quot;I AM MAYOR&amp;quot;
20 GOTO 10&lt;/pre&gt;&lt;/blockquote&gt;     &lt;p&gt;他认为市长应该做好自己的本职工作，而那份工作和编程无关。编程并非一项必要的技能，认为每个人都需要编程，就像要求每个人都学习管道工一样荒唐。这是将编程等同于必要的生活技巧，比如阅读、写作和数学。&lt;/p&gt;     &lt;p&gt;我 非常同意 Jeff Atwood 的看法。如今的教育试图将过多的技能强加给人，而在实际生活个人能够用到的技能却很有限。不过，什么是必要的技能，不同的人的看法显然不会相同。Jeff Atwood 的论据同样可以用来反驳自己，因为在我认为，在必要技能中，除了阅读之外，写作和数学似乎也不必过分强调，领导的讲话稿常是秘书写好的，而不懂数学并不妨 碍你成为文学家。同样，我也可以辩论说，编程和写作一样，都是必要的技能。&lt;/p&gt;     &lt;p&gt;就在 Coding Error 的文章发表不久，Mike Loukides 就       &lt;a href="http://radar.oreilly.com/2012/05/judge-alsup-codes.html" target="_blank"&gt;在 Oreilly&lt;/a&gt; 做出了这样的回应。他说编程已经成为文化的一部分，因此学习编程是有必要的。最近的一个例子就是 Google vs Oracle 案，相信许多人都有这样的疑惑，决定案件结果的都是不懂编程的人，他们怎么做出正确的判断？&lt;/p&gt;     &lt;p&gt;或许你没有想到，法官 William Alsup 还真的学过编程，而且现在还学了 Java。当 Oracle 的律师宣称 Google 侵权的rangeCheck() 耗时很久，Alsup 说他写过许多类似的代码。&lt;/p&gt;     &lt;blockquote&gt;       &lt;p&gt;我已经写过上百遍 rangeCheck 这样的代码了。我能做到，你也能做到。想想这件事，他们自己能很快的编写这样的代码，还会拷贝吗，那是一个巧合。你不能说这会使得他们的代码更快进入市场。你是美国最好的律师之一，怎么能做出这样的推断？&lt;/p&gt;&lt;/blockquote&gt;     &lt;p&gt;以这件事为例，Mike Loukides 认为，学习编程不是让我们都去做程序员的工作，而且了解编程的原理。编程已经成为我们生活的世界的一部分。&lt;/p&gt;     &lt;blockquote&gt;       &lt;p&gt;我 们有太多的法律人士认为互联网是管道，对于文件传输工具的合法使用一无所知，对于在线空间的隐私没有丝毫概念。我们已经有太多的专利审查官将多年前的“现 有技术”批准为专利。而且我们已经有太多的法官在听过律师讨论技术之后，在毫不理解的情况下做出了裁决。学些编程不能解决这些问题，但是编程能够使我们和 科技产生联系，这比单纯的无知要好。&lt;/p&gt;       &lt;p&gt;即使你从不专业去做编程，它仍是文化技能的一部分。Alsup 是个现代英雄。&lt;/p&gt;&lt;/blockquote&gt;     &lt;p&gt;这足以证明我们都需要学习编程？似乎仍过于牵强。现实生活中，可能随时要求我们展示各种技能，事先筹备一切的想法有些荒唐。不过 Alsup 的事情再次验证了一句俗语：技多不压身。如果你有时间和兴趣，不妨多了解和掌握些技能，或许随时可能有用，比如编程这项技能。&lt;/p&gt;
&lt;/div&gt;


			   &lt;div&gt;
     &lt;input name="wurl" type="hidden" value="http://www.linuxeden.com/html/news/20120520/124437.html"&gt;&lt;/input&gt;
     &lt;input name="wtitle" type="hidden" value="我们需要学习编程吗？ "&gt;&lt;/input&gt;
         &lt;input name="wpic" type="hidden" value="http://www.linuxeden.com/upimg/allimg/120520/253_052011330bR3.jpg"&gt;&lt;/input&gt;
&lt;/div&gt;
   &lt;p&gt;
    
&lt;/p&gt;
 

			 











			&lt;/div&gt;</description>
      <category>linux</category>
      <guid isPermaLink="true">http://itnewsvendor.appspot.com/6511046-%E6%88%91%E4%BB%AC_%E9%9C%80%E8%A6%81_%E5%AD%A6%E4%B9%A0.html</guid>
      <pubDate>Sun, 20 May 2012 16:31:37 UTC</pubDate>
    </item>
    <item>
      <title>webOS 3.0.6存在 但暂时还未释出</title>
      <link>http://itnewsvendor.appspot.com/6520045-webos_3.0.6_%E5%AD%98%E5%9C%A8.html</link>
      <description>&lt;div&gt;





	        &lt;div&gt;





  





&lt;/div&gt;





	        &lt;div&gt;











  





&lt;/div&gt;











			　　    &lt;div&gt;
     &lt;div&gt;最近我们发现了webOS3.0.6的最新版本，不过不是OTA提示的更新，根据匿名消息提供者的消息看来 ，目前webOS3.0.6仍然仅存在惠普的服务器里面进行测试，目前应该只有极少数设备更新了该最新更新，但至少说明，它，存在，而且进一步的开发从完善未止步。
       &lt;p&gt; &lt;/p&gt;
       &lt;p&gt; &lt;/p&gt;
       &lt;p&gt;         &lt;img alt="" src="http://www.linuxeden.com/upimg/allimg/120520/11533M921-0.png"&gt;&lt;/img&gt;&lt;/p&gt;
       &lt;p&gt; &lt;/p&gt;
       &lt;p&gt;那么，到底webOS3.0.6中有什么好东西呢？这个目前还不清楚，至少，应该不是非常大的更新，一个3.0.5到3.0.6的更新应该不会让用户们感到明显的区别，屏幕上的内容应该不会有变化，更多的，还是系统底层稳定性，和流畅性兼容性等等的补充和升级完善，而且遗憾的是，我们发现Facebook和twitter这样的日常应用还是没有统一融合到webOS系统当中， 大家继续等待吧，其实这条新闻的意义更多是告诉大家，webOS没有停步不前，在9月的open webOS1.0到来之前，webOS也不会完全处于停滞阶段，现在，我们还是等等看Pre3的2.2.5更新或者Veer的更新吧，既然Touchpad的都放到服务器上内测了，估计Pre3和Veer应该的也快来了：） &lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;


			   &lt;div&gt;
     &lt;input name="wurl" type="hidden" value="http://www.linuxeden.com/html/news/20120520/124439.html"&gt;&lt;/input&gt;
     &lt;input name="wtitle" type="hidden" value="webOS 3.0.6存在 但暂时还未释出 "&gt;&lt;/input&gt;
         &lt;input name="wpic" type="hidden" value="http://www.linuxeden.com/upimg/allimg/120520/105_052012164Y440.png"&gt;&lt;/input&gt;
&lt;/div&gt;
   &lt;p&gt;
    
&lt;/p&gt;
 

			 











			&lt;/div&gt;</description>
      <category>linux</category>
      <guid isPermaLink="true">http://itnewsvendor.appspot.com/6520045-webos_3.0.6_%E5%AD%98%E5%9C%A8.html</guid>
      <pubDate>Sun, 20 May 2012 16:31:34 UTC</pubDate>
    </item>
    <item>
      <title>开发者跪求：该进行“碎片整理”了</title>
      <link>http://itnewsvendor.appspot.com/6524009-%E5%BC%80%E5%8F%91_%E8%BF%9B%E8%A1%8C_%E7%A2%8E%E7%89%87.html</link>
      <description>&lt;div&gt;





	        &lt;div&gt;





  





&lt;/div&gt;





	        &lt;div&gt;











  





&lt;/div&gt;











			　　    &lt;div&gt;
     &lt;p&gt;安卓系统的“碎片化”已经成为了业界共识，由于系统的开源性，用户、开发者、OEM厂商、运营商都可以按照自己的想法对这只绿色机器人进行改造，这种“碎片化”的程度有多严重呢？&lt;/p&gt;
     &lt;p&gt;最近国外的一家互联网公司OpenSignalMaps（以下简称OSM）发布了一份调查报告。他们在过去六个月中对下载该公司同名监测应用的681900台设备进行了调查，并从机型、品牌、系统版本号以及屏幕分辨率四个方面进行了统计，为我们展示出了一幅支离破碎的安卓版图。&lt;/p&gt;
     &lt;p&gt;       &lt;img alt="" border="0" height="332" src="http://www.linuxeden.com/upimg/allimg/120520/1I93A543-0.jpg" width="500"&gt;&lt;/img&gt;&lt;/p&gt;
     &lt;p&gt;       &lt;strong&gt;机型&lt;/strong&gt;&lt;/p&gt;
     &lt;p&gt;在这次调查中，OSM公司共统计出       &lt;strong&gt;3997种不同的机型&lt;/strong&gt;，三星的GT-i9100（Galaxy S II）的占有率毫无悬念地问鼎榜首，共有61389个持有该设备的用户下载了OSM软件。&lt;/p&gt;
     &lt;p&gt;但是在统计中出现了一个问题：有许多用户的自制ROM在安装后会覆盖厂商原有的机型信息，导致各个机型的数量并不准确，这也是为何有多达1363个机型只出现了一次的原因之一。另一个原因就是这些“隐士型机型”的确非常小众――其中有来自匈牙利的10.1寸平板电脑“Concordo Tab”，来自印度的双卡手机Lemon P1，来自西班牙的家庭娱乐平板Energy Tablet i724等等。&lt;/p&gt;
     &lt;p&gt;下面是OSM网站制作的统计图，只要将鼠标移动到相应的机型色块上，你就能看到对应的品牌和设备信息（色块面积代表设备的占有百分比）。&lt;/p&gt;
     &lt;p&gt;       &lt;img alt="" border="0" height="273" src="http://www.linuxeden.com/upimg/allimg/120520/1I93610H-1.jpg" width="500"&gt;&lt;/img&gt;&lt;/p&gt;
     &lt;p&gt;       &lt;strong&gt;品牌&lt;/strong&gt;&lt;/p&gt;
     &lt;p&gt;调查中OSM公司发现了       &lt;strong&gt;599个不同品牌的安卓设备&lt;/strong&gt;（上面提到的自制ROM覆盖信息问题同样存在），这真是一个谁都能做手机的时代。&lt;/p&gt;
     &lt;p&gt;我们来看看调查中比较有趣的数据：两台Fusion Garage出品的平板电脑，这个最早涉足平板电脑的公司由于经营不利已经在4个月之前宣布清盘；7台宝丽来公司出品的“智能相机”；还有大约200台Marvell公司出产的设备――请注意，这并不是那个拥有复仇者联盟的Marvel公司。&lt;/p&gt;
     &lt;p&gt;当然，冠军仍旧属于三星，       &lt;strong&gt;共有270144台三星设备参与了此次调查，约占总样本数的40%。&lt;/strong&gt;&lt;/p&gt;
     &lt;p&gt;       &lt;img alt="" border="0" height="282" src="http://www.linuxeden.com/upimg/allimg/120520/1I9364396-2.jpg" width="500"&gt;&lt;/img&gt;&lt;/p&gt;
     &lt;p&gt;       &lt;strong&gt;系统版本号&lt;/strong&gt;&lt;/p&gt;
     &lt;p&gt;随着Google一次又一次地发布新的版本，安卓系统的版本碎片化也越来越严重。运行旧版本系统的设备仍旧大量存在，各厂商又无法对其进行统一升级，导致近一年来安卓系统各版本的市场占有率并无太大变化。&lt;/p&gt;
     &lt;p&gt;我们可以看下图，在2011年4月的统计中，运行安卓2.3（姜饼）系统的设备占65.6%，时隔一年后，运行安卓2.3.3（2.3的修正版，加入了部分新特性，同样也名为姜饼）的设备仍然占55.4%，但安卓的两个使用率最高的版本（2.3和2.2）占有率已经从90%降到了75%，这对开发者们来说无疑又是一个坏消息――他们在开发应用时得兼顾更多的版本了。&lt;/p&gt;
     &lt;p&gt;       &lt;img alt="" border="0" height="171" src="http://www.linuxeden.com/upimg/allimg/120520/1I93A415-3.jpg" width="500"&gt;&lt;/img&gt;&lt;/p&gt;
     &lt;p&gt;       &lt;strong&gt;屏幕分辨率&lt;/strong&gt;&lt;/p&gt;
     &lt;p&gt;这幅图能更好地显示出安卓设备的屏幕分辨率种类之繁杂，颜色深浅代表其数量大小，右图中则标注出了几种最主要的分辨率。&lt;/p&gt;
     &lt;p&gt;       &lt;img alt="" border="0" height="285" src="http://www.linuxeden.com/upimg/allimg/120520/1I9362460-4.jpg" width="500"&gt;&lt;/img&gt;&lt;/p&gt;
     &lt;p&gt;       &lt;strong&gt;无法停止的“碎片化”？&lt;/strong&gt;&lt;/p&gt;
     &lt;p&gt;如此严重的“碎片化”，对于安卓来说既是福音，又是诅咒。&lt;/p&gt;
     &lt;p&gt;从好的方面看来，“碎片化”让每个用户都可以与众不同，选择最适合自己的机型和UI，也给了每个厂商自我创新的机会（就连腕表品牌“豪雅表”都推出了一款安卓手机），而且参与此次调查的用户来自195个国家，其中       &lt;strong&gt;参与用户最多的五个国家为美国、巴西、中国、俄罗斯和墨西哥&lt;/strong&gt;。能够用一个系统覆盖如此之大的市场，安卓也足以自豪了。&lt;/p&gt;
     &lt;p&gt;另一方面，高度“碎片化”给安卓带来的弊端也非常多，最严重的问题就是安卓的“应用生态系统”无法良好运行，大批的开发者们萌生退意，这也让Google非常头疼。自从推出安卓4.0之后，Google就开始努力地解决这个问题，他们甚至将允许多个厂商生产自己的Nexus手机，由此加快各厂商设备的升级速度。&lt;/p&gt;
     &lt;p&gt;但是每个厂商都想用自己的方式来设计手机系统，对于用户来说，五花八门的的UI和ROM也是促进其购买欲的一大因素。Google想要把失控的安卓抓回掌心，还得好好想想办法。&lt;/p&gt;
     &lt;p&gt;       &lt;strong&gt;原文出处：&lt;/strong&gt;       &lt;a href="http://www.guokr.com/article/189002/" target="_blank"&gt;         &lt;strong&gt;果壳网&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;


			   &lt;div&gt;
     &lt;input name="wurl" type="hidden" value="http://www.linuxeden.com/html/news/20120520/124449.html"&gt;&lt;/input&gt;
     &lt;input name="wtitle" type="hidden" value="开发者跪求：该进行“碎片整理”了 "&gt;&lt;/input&gt;
         &lt;input name="wpic" type="hidden" value="http://www.linuxeden.com/upimg/allimg/120520/253_05201I93YB3.jpg"&gt;&lt;/input&gt;
&lt;/div&gt;
   &lt;p&gt;
    
&lt;/p&gt;
 

			 











			&lt;/div&gt;</description>
      <category>linux</category>
      <guid isPermaLink="true">http://itnewsvendor.appspot.com/6524009-%E5%BC%80%E5%8F%91_%E8%BF%9B%E8%A1%8C_%E7%A2%8E%E7%89%87.html</guid>
      <pubDate>Sun, 20 May 2012 16:31:32 UTC</pubDate>
    </item>
    <item>
      <title>每日文章精选 2012 05 20</title>
      <link>http://itnewsvendor.appspot.com/6515036-%E6%AF%8F%E6%97%A5_%E6%96%87%E7%AB%A0_%E7%B2%BE%E9%80%89.html</link>
      <description>&lt;div&gt;





	        &lt;div&gt;





  





&lt;/div&gt;





	        &lt;div&gt;











  





&lt;/div&gt;











			　　    &lt;p&gt;
     &lt;table border="0" cellpadding="2" cellspacing="2" width="100%"&gt;
       
                &lt;tr&gt;
                      &lt;td align="center" rowspan="2" width="30%"&gt;            &lt;a href="http://www.linuxeden.com/html/news/20120519/124394.html"&gt;              &lt;img alt="Mandriva Linux 回归社区" border="0" height="120" src="http://www.linuxeden.com/upimg/allimg/120519/254_051ZP5064T4.gif" width="120"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/td&gt;
                      &lt;td width="70%"&gt;            &lt;a href="http://www.linuxeden.com/html/news/20120519/124394.html"&gt;Mandriva Linux 回归社区&lt;/a&gt;&lt;/td&gt;
        &lt;/tr&gt;
                &lt;tr&gt;
                      &lt;td&gt;Mandriva 官方博客发布一篇简短的文章，该文章称，Mandriva SA 已经决定将 Mandriva Linux 发行版交由一个独立的实体进行管理，而 Mandriva 公司不再对该发行版进行控制。&lt;/td&gt;
        &lt;/tr&gt;
    
&lt;/table&gt;
     &lt;table border="0" cellpadding="2" cellspacing="2" width="100%"&gt;
       
                &lt;tr&gt;
                      &lt;td align="center" rowspan="2" width="30%"&gt;            &lt;a href="http://www.linuxeden.com/html/news/20120519/124426.html"&gt;              &lt;img alt="老程序员都到哪里去了？ " border="0" height="120" src="http://www.linuxeden.com/upimg/allimg/120519/253_0519224QA522.jpg" width="120"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/td&gt;
                      &lt;td width="70%"&gt;            &lt;a href="http://www.linuxeden.com/html/news/20120519/124426.html"&gt;老程序员都到哪里去了？ &lt;/a&gt;&lt;/td&gt;
        &lt;/tr&gt;
                &lt;tr&gt;
                      &lt;td&gt;老 程序员 都到哪儿去了？ –寻找40岁之后软件开发者的象冢 人们都认为软件开发是年轻人的游戏。当年轻自信的程序员获得优厚的待遇并向管理层晋升的时候，老程序员们甚至找&lt;/td&gt;
        &lt;/tr&gt;
    
&lt;/table&gt;
     &lt;table border="0" cellpadding="2" cellspacing="2" width="100%"&gt;
       
                &lt;tr&gt;
                      &lt;td align="center" rowspan="2" width="30%"&gt;            &lt;a href="http://www.linuxeden.com/html/news/20120519/124400.html"&gt;              &lt;img alt="Twitter与Mozilla让你能拒绝＂网站追踪功能＂" border="0" height="120" src="http://www.linuxeden.com/upimg/allimg/120519/1_051Z9335B529.jpg" width="120"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/td&gt;
                      &lt;td width="70%"&gt;            &lt;a href="http://www.linuxeden.com/html/news/20120519/124400.html"&gt;Twitter与Mozilla让你能拒绝＂网站追踪功能＂&lt;/a&gt;&lt;/td&gt;
        &lt;/tr&gt;
                &lt;tr&gt;
                      &lt;td&gt;虽然社群网站因为坐拥用户的各种信息而可以更切中消费者的心，也能让广告商可以更准确地将广告投向目标族群，某方面来说其实也算是「服务」的一种，但不见得每个人都能接受&lt;/td&gt;
        &lt;/tr&gt;
    
&lt;/table&gt;
     &lt;table border="0" cellpadding="2" cellspacing="2" width="100%"&gt;
       
                &lt;tr&gt;
                      &lt;td align="center" rowspan="2" width="30%"&gt;            &lt;a href="http://www.linuxeden.com/html/news/20120520/124437.html"&gt;              &lt;img alt="我们需要学习编程吗？ " border="0" height="120" src="http://www.linuxeden.com/upimg/allimg/120520/253_052011330bR3.jpg" width="120"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/td&gt;
                      &lt;td width="70%"&gt;            &lt;a href="http://www.linuxeden.com/html/news/20120520/124437.html"&gt;我们需要学习编程吗？ &lt;/a&gt;&lt;/td&gt;
        &lt;/tr&gt;
                &lt;tr&gt;
                      &lt;td&gt;如今，计算机已经成为我们生活中的必需品，但是，我们真的有必要去学习编程吗？ 对 于编程，相信许多人和我一样，是一种敬而远之的态度。就是说将其视为一项专业的技能，便&lt;/td&gt;
        &lt;/tr&gt;
    
&lt;/table&gt;
     &lt;table border="0" cellpadding="2" cellspacing="2" width="100%"&gt;
       
                &lt;tr&gt;
                      &lt;td align="center" rowspan="2" width="30%"&gt;            &lt;a href="http://www.linuxeden.com/html/news/20120519/124398.html"&gt;              &lt;img alt="CrossOver XI 周年特惠" border="0" height="120" src="http://www.linuxeden.com/images/defaultpic.gif" width="120"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/td&gt;
                      &lt;td width="70%"&gt;            &lt;a href="http://www.linuxeden.com/html/news/20120519/124398.html"&gt;CrossOver XI 周年特惠&lt;/a&gt;&lt;/td&gt;
        &lt;/tr&gt;
                &lt;tr&gt;
                      &lt;td&gt;看到昨日发布 Diablo III 眼馋？CrossOver XI 适时推出周年庆典大减价活动，助您在 Linux 系统上砍杀 Diablo 的小喽罗们。 首先可以前往 CodeWeaver 下载 CrossOver XI 免&lt;/td&gt;
        &lt;/tr&gt;
    
&lt;/table&gt;
&lt;/p&gt;


			   &lt;div&gt;
     &lt;input name="wurl" type="hidden" value="http://www.linuxeden.com/html/news/20120520/124450.html"&gt;&lt;/input&gt;
     &lt;input name="wtitle" type="hidden" value="每日文章精选 2012 05 20"&gt;&lt;/input&gt;
         &lt;input name="wpic" type="hidden" value="http://www.linuxeden.com/upimg/allimg/120520/254_052021091155F.gif"&gt;&lt;/input&gt;
&lt;/div&gt;
   &lt;p&gt;
    
&lt;/p&gt;
 

			 











			&lt;/div&gt;</description>
      <category>linux</category>
      <guid isPermaLink="true">http://itnewsvendor.appspot.com/6515036-%E6%AF%8F%E6%97%A5_%E6%96%87%E7%AB%A0_%E7%B2%BE%E9%80%89.html</guid>
      <pubDate>Sun, 20 May 2012 16:31:29 UTC</pubDate>
    </item>
    <item>
      <title>富士康否认与苹果等惠普客户达成战略联盟</title>
      <link>http://itnewsvendor.appspot.com/6512051-%E5%AF%8C%E5%A3%AB_%E5%90%A6%E8%AE%A4_%E8%8B%B9%E6%9E%9C.html</link>
      <description>&lt;div&gt;   &lt;p&gt;     &lt;strong&gt;腾讯科技讯&lt;/strong&gt;（林靖东）北京时间5月17日消息，据台湾媒体报道，富士康电子（鸿海精密）发表声明澄清了市场传闻，否认公司打算与        &lt;a href="http://stockhtm.finance.qq.com/astock/ggcx/AAPL.OQ.htm" target="_blank"&gt;苹果&lt;/a&gt;和        &lt;a href="http://stockhtm.finance.qq.com/astock/ggcx/HPQ.N.htm" target="_blank"&gt;惠普&lt;/a&gt;等客户通过相互投资的方式建立战略联盟。&lt;/p&gt;   &lt;p&gt;传闻称，富士康的目的是进一步加深与客户的关系；富士康最近宣布与日本夏普进行相互投资只是这一战略的开始而已。&lt;/p&gt;   &lt;p&gt;富士康董事长郭台铭近日表示，公司将于客户合作建立劳工权益和工作环境的全球标准。市场观察员认为，郭台铭的话也是催生上述传闻的因素之一。&lt;/p&gt;   &lt;p&gt;然而，据     &lt;a href="http://digi.qq.com/nbook/nbook.shtml" target="_blank"&gt;笔记本&lt;/a&gt;电脑厂商中的知情人士透露，建立紧密的合作关系本身是一把双刃剑，因为这样将导致合作双方将所有的鸡蛋都放在同一个篮子里，势必会增加风险。&lt;/p&gt;&lt;/div&gt;</description>
      <category>qq</category>
      <guid isPermaLink="true">http://itnewsvendor.appspot.com/6512051-%E5%AF%8C%E5%A3%AB_%E5%90%A6%E8%AE%A4_%E8%8B%B9%E6%9E%9C.html</guid>
      <pubDate>Sun, 20 May 2012 11:31:21 UTC</pubDate>
    </item>
    <item>
      <title>苹果已拥有类Kinect体感控制技术 或用于电视</title>
      <link>http://itnewsvendor.appspot.com/6508046-%E8%8B%B9%E6%9E%9C_%E6%8B%A5%E6%9C%89_kinect.html</link>
      <description>&lt;div&gt;   &lt;p&gt;&lt;/p&gt;   &lt;p align="center"&gt;     &lt;img alt="苹果已拥有类Kinect体感控制技术 或用于电视" src="http://img1.gtimg.com/tech/pics/hv1/235/17/1042/67760620.jpg"&gt;&lt;/img&gt;&lt;/p&gt;   &lt;p align="center"&gt;开发者可开发体感控制应用（腾讯科技配图）&lt;/p&gt;   &lt;p&gt;     &lt;strong&gt;腾讯科技讯&lt;/strong&gt;（清雨）北京时间5月17日消息，据国外媒体报道，知情消息人士透露，自2005年以来，        &lt;a href="http://stockhtm.finance.qq.com/astock/ggcx/AAPL.OQ.htm" target="_blank"&gt;苹果&lt;/a&gt;实际上已经拥有了类似于Xbox的Kinect体感控制技术的动作感应照相技术。&lt;/p&gt;   &lt;p&gt;消息人士指出，这个被称作“gestures”的原创技术是由一名实习人员开发的，时间大概在首款iPod受市场追捧的时候。&lt;/p&gt;   &lt;p&gt;这项技术最初是一项黑客技术。不过，苹果认为，这项技术值得拥有。消息人士指出，苹果最初打算在内置照相机的MacBook和iMac电脑上应用这项技术。不过，苹果最终没有这么做。&lt;/p&gt;   &lt;p&gt;消息人士指出，苹果可能会在即将推出的苹果电视机上应用这项技术。目前，        &lt;a href="http://stockhtm.finance.qq.com/astock/ggcx/MSFT.OQ.htm" target="_blank"&gt;微软&lt;/a&gt;已经拥有了可连接所有家庭娱乐设备的运动控制器。&lt;/p&gt;   &lt;p&gt;另外，苹果还有可能会利用这项动作感受照相技术开发与微软Xbox 360竞争的产品。Xbox 360现在拥有语音识别和运动控制功能。&lt;/p&gt;&lt;/div&gt;</description>
      <category>qq</category>
      <guid isPermaLink="true">http://itnewsvendor.appspot.com/6508046-%E8%8B%B9%E6%9E%9C_%E6%8B%A5%E6%9C%89_kinect.html</guid>
      <pubDate>Sun, 20 May 2012 11:31:19 UTC</pubDate>
    </item>
    <item>
      <title>美国向中国太阳能厂商最高征250%反倾销税</title>
      <link>http://itnewsvendor.appspot.com/6514041-%E7%BE%8E%E5%9B%BD_%E4%B8%AD%E5%9B%BD_%E5%A4%AA%E9%98%B3%E8%83%BD.html</link>
      <description>&lt;div&gt;   &lt;p&gt;　　当地时间周四，美国商务部宣布，将向中国太阳能电池板制造商征收31%至250%的惩罚性关税。面对美方的这一贸易保护主义举措，包括无锡尚德、天合光能、英利绿色新能源等在内的中国光伏组件厂商纷纷发布声明，称这一处罚“不公平不合理”，中国机电产品进出口商会也回应称，美国商务部做出的反倾销初裁决定，在一定程度上扭曲了中国光伏产业的生产及对美出口情况，是不公正的，初裁结果“损人不利己”。&lt;/p&gt;   &lt;p&gt;     &lt;strong&gt;　　美商务部处罚超预期&lt;/strong&gt;&lt;/p&gt;   &lt;p&gt;　　今年3月20日，美国商务部初裁认定，中国输美晶体硅光伏电池及组件存在补贴行为，幅度为2.9%-4.73%。因此，决定对中国制造太阳能产品征收最高不足5%的反补贴税率。这一税率，大大低于市场预期。但当时国内多家光伏企业负责人就表示，反补贴税并非关键，5月份的反倾销税可能会远高于反补贴税。&lt;/p&gt;   &lt;p&gt;　　如今，这一担忧变成了现实，并超出了此前业界的预期。美国商务部17日宣布对中国光伏电池及组件的反倾销税初裁结果，税率达31.14%至249.96%。其中，对无锡尚德征收31.22%的反倾销税，对天合光能征收31.14%的反倾销税，对其他中国光伏企业征收的反倾销税率则在31.18%～249.96%之间。美国商务部表示，有关关税的最终裁决将在10月初做出，在此之前海关将收取现款保证金或担保金，如得到否定裁决，有关款项将退还。&lt;/p&gt;   &lt;p&gt;　　受此影响，美国太阳能厂商股价周四大涨，First Solar大涨6.7%，SunPow er涨幅为10%；而中国太阳能厂商则大幅下跌，英利暴跌12%，天合光能下跌了8%，尚德下跌4%。&lt;/p&gt;   &lt;p&gt;     &lt;strong&gt;　　中国光伏企业强烈反对&lt;/strong&gt;&lt;/p&gt;   &lt;p&gt;　　美国商务部的反倾销裁定，对处于困境中的中国光伏企业而言，无疑是在伤口撒盐，自然会引发中国光伏企业的集体反弹。&lt;/p&gt;   &lt;p&gt;　　无锡尚德董事长兼C E O施正荣表示：“这个裁决没有客观反映全球光伏产业和尚德公司的现状，因为事实上我们过去没有、将来也不会在任何市场倾销我们的产品。对于这个初裁结果，我们表示坚决反对，并将继续加强与美商务部的沟通，让他们了解我们的立场和事实的真相。”施正荣再次呼吁，全球光伏企业联合起来，加强对话与合作，消除壁垒和对抗。&lt;/p&gt;   &lt;p&gt;　　天合光能董事长兼首席执行官高纪凡回应称：“美国针对中国光伏产品的反倾销初裁，不公平不合理。”&lt;/p&gt;   &lt;p&gt;　　位于华盛顿的美国太阳能普及联盟也对此处罚决定颇为不满，认为这一决定将导致更多美国人失业。中国机电产品进出口商会指出，如美对中国光伏电池征收反倾销税，势必会影响美下游用户的利益，将使其不得不购买高价光伏电池。此外，贸易限制措施会影响全球光伏能源市场的发展，也不可避免的导致中国自美进口相关上下游产品的减少，对美自身产业发展不利。&lt;/p&gt;   &lt;p&gt;　　据悉，英利、天合光能、尚德、阿特斯四家中国光伏企业将于本月24日下午在上海召开新闻发布会，反对这一裁决。&lt;/p&gt;   &lt;p&gt;　　采写：南都记者高凌云&lt;/p&gt;   &lt;p&gt;　　实习生曹璇&lt;/p&gt;&lt;/div&gt;</description>
      <category>qq</category>
      <guid isPermaLink="true">http://itnewsvendor.appspot.com/6514041-%E7%BE%8E%E5%9B%BD_%E4%B8%AD%E5%9B%BD_%E5%A4%AA%E9%98%B3%E8%83%BD.html</guid>
      <pubDate>Sun, 20 May 2012 11:31:16 UTC</pubDate>
    </item>
    <item>
      <title>台媒称亚马逊或于今秋推10.1英寸Kindle Fire</title>
      <link>http://itnewsvendor.appspot.com/6495076-10.1_%E8%8B%B1%E5%AF%B8_kindle.html</link>
      <description>&lt;div&gt;   &lt;p align="center"&gt;     &lt;img alt="台媒称亚马逊或于今秋推10.1英寸Kindle Fire" src="http://img1.gtimg.com/tech/pics/hv1/57/84/1043/67842552.jpg"&gt;&lt;/img&gt;&lt;/p&gt;   &lt;p&gt;　　【TechWeb报道】5月19日消息，据国外媒体报道，据传        &lt;a href="http://stockhtm.finance.qq.com/astock/ggcx/AMZN.OQ.htm" target="_blank"&gt;亚马逊&lt;/a&gt;可能于2012年第三季度发布10.1英寸的Kindle Fire。且亚马逊很有可能在今秋推出两款Kindle，还有一款是7英寸的。&lt;/p&gt;   &lt;p&gt;　　而此前报道的亚马逊正8.9寸平板，可能被搁置。&lt;/p&gt;   &lt;p&gt;　　消息源自台湾《电子时报》，虽然目前没有过硬的证据证明传言属实。但该报的信息一贯兑现率较高。据报道，该款Kindle以        &lt;a href="http://stockhtm.finance.qq.com/astock/ggcx/AAPL.OQ.htm" target="_blank"&gt;苹果&lt;/a&gt;9.7寸iPad为竞争目标。新平板将于本季度末或第三季度初开始量产。&lt;/p&gt;   &lt;p&gt;　　亚马逊平板电脑的订单在第二季度末及第三季度初就开始逐步增加。据业界新闻称，亚马逊2012年平板电脑的销售量有望达到3000到4000万台，包括初级及高级7英寸的Kindle Fire平板电脑。（博宁）&lt;/p&gt;&lt;/div&gt;</description>
      <category>qq</category>
      <guid isPermaLink="true">http://itnewsvendor.appspot.com/6495076-10.1_%E8%8B%B1%E5%AF%B8_kindle.html</guid>
      <pubDate>Sun, 20 May 2012 11:31:12 UTC</pubDate>
    </item>
    <item>
      <title>乔布斯电影部分片段将在苹果原车库拍摄(图)</title>
      <link>http://itnewsvendor.appspot.com/6516036-%E7%94%B5%E5%BD%B1_%E9%83%A8%E5%88%86_%E7%89%87%E6%AE%B5.html</link>
      <description>&lt;div&gt;   &lt;p&gt;&lt;/p&gt;   &lt;p align="center"&gt;     &lt;img alt="乔布斯电影部分片段将在苹果原车库拍摄(图)" src="http://img1.gtimg.com/tech/pics/hv1/183/96/1043/67845738.jpg"&gt;&lt;/img&gt;&lt;/p&gt;   &lt;p align="center"&gt;  乔布斯影片拍摄地之一（腾讯科技配图）&lt;/p&gt;   &lt;p&gt;     &lt;strong&gt;腾讯科技讯&lt;/strong&gt;（悦潼）北京时间5月20日消息，据外国媒体报道，据制作反映乔布斯生涯之电影的影业公司Five Star Feature Films称，这部名为《史蒂夫·乔布斯：灵光乍现（Jobs: Get Inspired）》的电影部分片段的拍摄场景地就安排在        &lt;a href="http://stockhtm.finance.qq.com/astock/ggcx/AAPL.OQ.htm" target="_blank"&gt;苹果&lt;/a&gt;公司的一些地方，其中就包括苹果公司的原车库所在地。&lt;/p&gt;   &lt;p&gt;《史蒂夫·乔布斯：灵光乍现》影片已经选定好莱坞明星阿什顿·库彻（Ashton Kutcher）出演乔布斯，主要是反映乔布斯担任苹果负责人的内容。&lt;/p&gt;   &lt;p&gt;此特别的地方位于加州洛奥图斯客城市克里斯大道2066号(Los Altosc, Crist Drive 2066)，此处就是乔布斯父母最先开设车库的地方，而且这里也是苹果公司最初的总部所在地，之后苹果才将公司总部迁移至Cupertino campus。而第一台苹果电脑以及第二代苹果电脑都是在此地面世。&lt;/p&gt;   &lt;p&gt;《史蒂夫·乔布斯：灵光乍现》目前正在制作之中，最终将会到影院投放。&lt;/p&gt;&lt;/div&gt;</description>
      <category>qq</category>
      <guid isPermaLink="true">http://itnewsvendor.appspot.com/6516036-%E7%94%B5%E5%BD%B1_%E9%83%A8%E5%88%86_%E7%89%87%E6%AE%B5.html</guid>
      <pubDate>Sun, 20 May 2012 11:31:07 UTC</pubDate>
    </item>
    <item>
      <title>英国研发新型存储器 速度比闪存快百倍</title>
      <link>http://itnewsvendor.appspot.com/6521023-%E8%8B%B1%E5%9B%BD_%E7%A0%94%E5%8F%91_%E6%96%B0%E5%9E%8B.html</link>
      <description>&lt;div&gt;   &lt;p&gt;　　新华社伦敦5月19日电(记者黄堃)英国研究人员最近报告说，他们研发出一种基于“电阻性记忆体”的新型存储设备，与现在广泛使用的闪存相比，耗电量更低，而存取速度要快上一百倍。&lt;/p&gt;   &lt;p&gt;　　电阻性记忆体的基础是忆阻材料，这种材料的特殊性在于，在外加电压时其电阻会发生变化，随后即使取消外加电压，它也能“记住”这个电阻值。在此基础上开发出的存储设备与现有闪存相比更快更节能，是业界近来的研发热点。但以前开发出的这种存储设备只能在高度真空环境中运行。&lt;/p&gt;   &lt;p&gt;　　英国伦敦大学学院等机构研究人员日前在《应用物理学杂志》上报告说，他们发现可用硅的氧化物制作一种新的忆阻材料，相应存储设备可在常规环境下运行，因此应用价值大大提高。&lt;/p&gt;   &lt;p&gt;　　研究人员安东尼·凯尼恩说，这种新型存储设备的能耗只有闪存的约千分之一，而其存取速度是闪存的一百倍以上。闪存现在已成为人们随身携带的U盘、数码相机、手机等设备中广泛使用的存储设备。&lt;/p&gt;   &lt;p&gt;　　据介绍，这项成果与科学史上许多发现一样都是源于意外。研究人员最开始是在用硅氧化物制作发光二极管，但在实验过程中出了故障，发现所用材料的电学性质变得不稳定了，检查之后发现它们电阻在变化，原因是已经变成了忆阻材料，于是正好把它们转用于研发新型存储设备。(完)&lt;/p&gt;&lt;/div&gt;</description>
      <category>qq</category>
      <guid isPermaLink="true">http://itnewsvendor.appspot.com/6521023-%E8%8B%B1%E5%9B%BD_%E7%A0%94%E5%8F%91_%E6%96%B0%E5%9E%8B.html</guid>
      <pubDate>Sun, 20 May 2012 11:31:05 UTC</pubDate>
    </item>
    <item>
      <title>微软升级Windows 8发行预览版内置应用</title>
      <link>http://itnewsvendor.appspot.com/6510060-%E5%BE%AE%E8%BD%AF_%E5%8D%87%E7%BA%A7_windows.html</link>
      <description>&lt;div&gt;
   &lt;p&gt;        &lt;img alt="" border="0" src="http://articles.csdn.net/uploads/allimg/120517/89_120517101650_1.jpg" width="600"&gt;&lt;/img&gt;&lt;/p&gt;
   &lt;p&gt;  5月17日消息，据国外媒体        &lt;a href="http://www.theverge.com/2012/5/16/3023702/windows-8-release-preview-mail-calendar-people-messaging-apps" target="_blank"&gt;    thevergeb&lt;/a&gt;  报道，微软下月将推出Windows 8发行预览版，目前正着手升级Windows 8内置应用。本次更新包括改进UI界面和新功能，还将移除应用顶部的“应用预览”Banner。&lt;/p&gt;
   &lt;p&gt;  微软最初在Windows 8消费者预览版内发布了一系列Metro风格应用程序，Windows Live服务也将整体转变为Windows 8系统的桌面应用程序。&lt;/p&gt;
   &lt;p&gt;   照片和音乐等多个应用程序的版本注释显示，  在本周  微软所修改的应用程序都“支持最新的Windows 8改进“。其中，最新变化的是Windows 8发行预览版内置的微软阅读器。&lt;/p&gt;
   &lt;p&gt;  而在本周早些时候，  微软公布了一个关于  邮箱修改的视频，从中看到改进了用户界面和颜色。在六月初，Windows 8发行预览版应用将会正式推出。&lt;/p&gt;
   &lt;p&gt;  原文链接：     &lt;a href="http://www.theverge.com/2012/5/16/3023702/windows-8-release-preview-mail-calendar-people-messaging-apps" target="_blank"&gt;   theverge.com&lt;/a&gt;&lt;/p&gt;
   &lt;div&gt;
	     &lt;ul&gt;&lt;/ul&gt;
&lt;/div&gt;
   &lt;br /&gt;
 
   &lt;p&gt;     &lt;a href="http://g.csdn.net/5216396" target="_blank"&gt;       &lt;img alt="" border="0" src="http://articles.csdn.net/uploads/allimg/120502/9_1446598041.gif"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/p&gt; 
   &lt;br /&gt;

   &lt;div align="right"&gt;【      &lt;a href="http://news.csdn.net/a/20120517/2805644.html#postcomment" target="_self"&gt;发表评论&lt;/a&gt;   0条 】
     &lt;a href="http://www.bshare.cn/share"&gt;分享按钮&lt;/a&gt;
  
&lt;/div&gt;	
&lt;/div&gt;</description>
      <category>csdn</category>
      <guid isPermaLink="true">http://itnewsvendor.appspot.com/6510060-%E5%BE%AE%E8%BD%AF_%E5%8D%87%E7%BA%A7_windows.html</guid>
      <pubDate>Sun, 20 May 2012 06:30:59 UTC</pubDate>
    </item>
    <item>
      <title>让谷歌感到害怕的12家新创公司 Quora居首</title>
      <link>http://itnewsvendor.appspot.com/6520036-%E8%B0%B7%E6%AD%8C_%E6%84%9F%E5%88%B0_%E5%AE%B3%E6%80%95.html</link>
      <description>&lt;div&gt;

   &lt;p&gt;     &lt;img alt="" border="0" height="375" src="http://articles.csdn.net/uploads/allimg/120517/119_120517091035_1.jpg" width="500"&gt;&lt;/img&gt;&lt;/p&gt;
   &lt;p&gt;北京时间5月17日消息，谷歌现在处于相当不错的位置。一方面在搜索市场上大幅领先，是最好的搜索引擎，另外一方面还进入其他领域，如支付和音乐。&lt;/p&gt;   &lt;p&gt;
但这些市场被搅动的时机已经成熟，所需的只是新创公司如何将谷歌赶下神坛的想法--谷歌无法像灵活的新创公司一样行动迅速。当询问一些投资者和业内人士，他们认为谷歌哪些地方可能处于被干扰的危险之中时，他们的回答显示，谷歌比我们想象的要脆弱得多。&lt;/p&gt;   &lt;p&gt;
甚至搜索也已不再神圣，一些新创公司将在谷歌的软肋下手。&lt;/p&gt;
   &lt;p&gt;     &lt;strong&gt;以下为谷歌应该害怕的12家新创公司&lt;/strong&gt;&lt;/p&gt;   &lt;p&gt;
1.Quora&lt;/p&gt;   &lt;p&gt;
谷歌搜索不一定是针对问题优化，而是针对关键词优化。但Quora是针对问题优化，并有庞大的问答知识库。&lt;/p&gt;   &lt;p&gt;
     &lt;strong&gt;2.Square&lt;/strong&gt;&lt;/p&gt;   &lt;p&gt;
谷歌通过谷歌钱包多次涉足近场通信和支付业务，但Pay With Square不需要特定技术，只用现有的技术，同样不需要钱包。&lt;/p&gt;   &lt;p&gt;
     &lt;strong&gt;3.DuckDuckGo&lt;/strong&gt;&lt;/p&gt;   &lt;p&gt;
在搜索量上，DuckDuckGo肯定无法与谷歌比，但该网站的增长曲线依然很有吸引力。在不需要存储和分享数据时，DuckDuckGo比谷歌有优势。&lt;/p&gt;   &lt;p&gt;
     &lt;strong&gt;4.AppNexus&lt;/strong&gt;&lt;/p&gt;   &lt;p&gt;
AppNexus是在显示广告市场搞地下工程。虽然谷歌可提供大量的广告，但AppNexus可轻易从侧面攻击谷歌，占领显示广告市场。这属于谷歌的重要市场，因此能打中要害。&lt;/p&gt;   &lt;p&gt;
     &lt;strong&gt;5.Spotify&lt;/strong&gt;&lt;/p&gt;   &lt;p&gt;
谷歌音乐几乎没有取得什么成果，因为该服务试图想取得与iTunes一样的成功，而Spotify和其他流体音乐服务显示出，时代肯定会改变。在朝音乐订阅经济发展中，Spotify已成为有比较大优势的领先者。&lt;/p&gt;   &lt;p&gt;
     &lt;strong&gt;6.Path&lt;/strong&gt;&lt;/p&gt;   &lt;p&gt;
Google+看起来很像Facebook的竞争者，不过实际上更像Facebook Connect，而不是完整的社交网站。但谷歌也投入大量的时间开发移动版Google+，而Path提供了好得多的移动用户体验。谷歌曾试图收购Path，但遭到拒绝。&lt;/p&gt;   &lt;p&gt;
     &lt;strong&gt;7.Pinterest&lt;/strong&gt;&lt;/p&gt;   &lt;p&gt;
谷歌不久将面临一个很艰难的抉择，收购Pinterest或让一个竞争者进来，解决其视频发现问题。Pinterest正在成为谷歌发现‌引擎一个明确和重要的组成部分，谷歌需要将该技术整合到自己的技术中，否则将冒失去大量机会的风险。&lt;/p&gt;   &lt;p&gt;
     &lt;strong&gt;8.Chartbeat&lt;/strong&gt;&lt;/p&gt;   &lt;p&gt;
谷歌分析（Google Analytics）在跟踪网站性能上是非常强大的工具，但依然缺乏实时分析。Chartbeat是最好的实时分析服务之一。谷歌曾试图自己开发实时分析，但还无法与Chartbeat相比。&lt;/p&gt;   &lt;p&gt;
Chartbeat还在扩大业务，为零售商和其他更大网站提供更强大的分析，因此侵占更多的谷歌市场只是时间问题。&lt;/p&gt;   &lt;p&gt;
     &lt;strong&gt;9.OnLive&lt;/strong&gt;&lt;/p&gt;   &lt;p&gt;
谷歌试图通过发布轻量级浏览器和以网页形式访问相关内容，开发自己的网页应用。这确实也包括了一些更高质量应用，在Chrome浏览器上可玩《愤怒的小鸟》。但OnLive采取了不同的方法，并非推出精简版的移动操作系统，而是通过网络提供完整版的Windows，也能玩Xbox 360品质游戏。&lt;/p&gt;   &lt;p&gt;
     &lt;strong&gt;10.SayHi&lt;/strong&gt;&lt;/p&gt;   &lt;p&gt;
谷歌翻译曾是翻译服务的金牌标准，但这是在SayHi正式登陆应用店以前。SayHi看起来像苹果的Siri，虽然还有一些问题要解决，但可能是现在最好的翻译应用。&lt;/p&gt;   &lt;p&gt;
     &lt;strong&gt;11.Sparrow&lt;/strong&gt;&lt;/p&gt;   &lt;p&gt;
Sparrow简化了收件箱，并使阅读邮件更方便，还可与Gmail帐号同步。对谷歌来说不幸的是，如果用户通过网络浏览器访问Gmail，将失去广告。如果Sparrow继续获得发展，谷歌基本上将无法从Gmail访问中获得广告收入。&lt;/p&gt;   &lt;p&gt;
     &lt;strong&gt;12.SocialCam&lt;/strong&gt;&lt;/p&gt;   &lt;p&gt;
这可能很难理解，但如果SocialCam走Instagram的道路，也许观看视频将不再需要视频门户网站YouTube。视频将通过社交和有机的方式分享，不需要搜索YouTube等网站的视频。任何相关的内容只在SocialCam推送中显示。&lt;/p&gt;
   &lt;p&gt;本文来自：     &lt;a href="http://tech.qq.com/a/20120517/000145.htm" target="_blank"&gt;腾讯科技&lt;/a&gt;&lt;/p&gt;
   &lt;p&gt;（责任编辑：张勇）&lt;/p&gt;
   &lt;div&gt;
	     &lt;ul&gt;&lt;/ul&gt;
&lt;/div&gt;
   &lt;br /&gt;
 
   &lt;p&gt;     &lt;a href="http://g.csdn.net/5216396" target="_blank"&gt;       &lt;img alt="" border="0" src="http://articles.csdn.net/uploads/allimg/120502/9_1446598041.gif"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/p&gt; 
   &lt;br /&gt;

   &lt;div align="right"&gt;【      &lt;a href="http://news.csdn.net/a/20120517/2805638.html#postcomment" target="_self"&gt;发表评论&lt;/a&gt;   0条 】
     &lt;a href="http://www.bshare.cn/share"&gt;分享按钮&lt;/a&gt;
  
&lt;/div&gt;	
&lt;/div&gt;</description>
      <category>csdn</category>
      <guid isPermaLink="true">http://itnewsvendor.appspot.com/6520036-%E8%B0%B7%E6%AD%8C_%E6%84%9F%E5%88%B0_%E5%AE%B3%E6%80%95.html</guid>
      <pubDate>Sun, 20 May 2012 06:30:58 UTC</pubDate>
    </item>
    <item>
      <title>Java AES文件加解密</title>
      <link>http://itnewsvendor.appspot.com/6517033-java_aes_%E6%96%87%E4%BB%B6.html</link>
      <description>&lt;div&gt; 
之前写了DES加解密，AES几乎与之相同，不同的是底层key的位数而已，不过这些对于我们使用者都是透明的。   &lt;br /&gt;   &lt;br /&gt;AESUtils.java   &lt;br /&gt;   &lt;div&gt;     &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;  package   demo.security;      &lt;br /&gt;      &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;      &lt;br /&gt;      &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;  import   java.io.File;      &lt;br /&gt;      &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;  import   java.io.FileInputStream;      &lt;br /&gt;      &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;  import   java.io.FileOutputStream;      &lt;br /&gt;      &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;  import   java.io.InputStream;      &lt;br /&gt;      &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;  import   java.io.OutputStream;      &lt;br /&gt;      &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;  import   java.security.Key;      &lt;br /&gt;      &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;  import   java.security.SecureRandom;      &lt;br /&gt;      &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;      &lt;br /&gt;      &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;  import   javax.crypto.Cipher;      &lt;br /&gt;      &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;  import   javax.crypto.CipherInputStream;      &lt;br /&gt;      &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;  import   javax.crypto.CipherOutputStream;      &lt;br /&gt;      &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;  import   javax.crypto.KeyGenerator;      &lt;br /&gt;      &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;  import   javax.crypto.SecretKey;      &lt;br /&gt;      &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;  import   javax.crypto.spec.SecretKeySpec;      &lt;br /&gt;      &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;      &lt;br /&gt;      &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif"&gt;&lt;/img&gt;      &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif"&gt;&lt;/img&gt;  /** */     /**          &lt;br /&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt; * &amp;lt;p&amp;gt;       &lt;br /&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt; * AES加密解密工具包       &lt;br /&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt; * &amp;lt;/p&amp;gt;       &lt;br /&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt; *        &lt;br /&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt; *    @author    IceWee       &lt;br /&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt; * @date 2012-5-18       &lt;br /&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt; *    @version    1.0       &lt;br /&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif"&gt;&lt;/img&gt;    */        &lt;br /&gt;      &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif"&gt;&lt;/img&gt;      &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif"&gt;&lt;/img&gt;  public     class   AESUtils         &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;     {       &lt;br /&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;       &lt;br /&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;       private       static       final    String ALGORITHM    =       &amp;quot;   AES   &amp;quot;   ;       &lt;br /&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;       private       static       final       int    KEY_SIZE    =       128   ;       &lt;br /&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;       private       static       final       int    CACHE_SIZE    =       1024   ;       &lt;br /&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;           &lt;br /&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;       /** */       /**            &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;p&amp;gt;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * 生成随机密钥        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;/p&amp;gt;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *         &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *     @return            &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *     @throws     Exception        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;         */          &lt;br /&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;       public       static    String getSecretKey()    throws    Exception           &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;       {        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            return     getSecretKey(    null    );        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;    }          &lt;br /&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;           &lt;br /&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;       /** */       /**            &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;p&amp;gt;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * 生成密钥        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;/p&amp;gt;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *         &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *     @param     seed 密钥种子        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *     @return            &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *     @throws     Exception        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;         */          &lt;br /&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;       public       static    String getSecretKey(String seed)    throws    Exception           &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;       {        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        KeyGenerator keyGenerator     =     KeyGenerator.getInstance(ALGORITHM);        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        SecureRandom secureRandom;        &lt;br /&gt;        &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;        &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;            if     (seed     !=         null         &amp;amp;&amp;amp;         !    &amp;quot;&amp;quot;    .equals(seed))             &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;         {         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            secureRandom      =           new      SecureRandom(seed.getBytes());         &lt;br /&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;        }         else                 &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;         {         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            secureRandom      =           new      SecureRandom();         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;        }            &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        keyGenerator.init(KEY_SIZE, secureRandom);         &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        SecretKey secretKey     =     keyGenerator.generateKey();         &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            return     Base64Utils.encode(secretKey.getEncoded());        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;    }          &lt;br /&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;           &lt;br /&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;       /** */       /**            &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;p&amp;gt;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * 加密        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;/p&amp;gt;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *         &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *     @param     data        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *     @param     key        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *     @return            &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *     @throws     Exception        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;         */          &lt;br /&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;       public       static       byte   [] encrypt(   byte   [] data, String key)    throws    Exception           &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;       {        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        Key k     =     toKey(Base64Utils.decode(key));        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            byte    [] raw     =     k.getEncoded();         &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        SecretKeySpec secretKeySpec     =         new     SecretKeySpec(raw, ALGORITHM);         &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        Cipher cipher     =     Cipher.getInstance(ALGORITHM);         &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            return     cipher.doFinal(data);        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;    }          &lt;br /&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;           &lt;br /&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;       /** */       /**            &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;p&amp;gt;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * 文件加密        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;/p&amp;gt;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *         &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *     @param     key        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *     @param     sourceFilePath        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *     @param     destFilePath        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *     @throws     Exception        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;         */          &lt;br /&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;       public       static       void    encryptFile(String key, String sourceFilePath, String destFilePath)    throws    Exception           &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;       {        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        File sourceFile     =         new     File(sourceFilePath);        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        File destFile     =         new     File(destFilePath);         &lt;br /&gt;        &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;        &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;            if     (sourceFile.exists()     &amp;amp;&amp;amp;     sourceFile.isFile())             &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;         {         &lt;br /&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;                 if      (     !     destFile.getParentFile().exists())               &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;           {          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;                destFile.getParentFile().mkdirs();          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;            }              &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            destFile.createNewFile();         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            InputStream in      =           new      FileInputStream(sourceFile);         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            OutputStream out      =           new      FileOutputStream(destFile);         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            Key k      =      toKey(Base64Utils.decode(key));         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;                 byte     [] raw      =      k.getEncoded();          &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            SecretKeySpec secretKeySpec      =           new      SecretKeySpec(raw, ALGORITHM);          &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            Cipher cipher      =      Cipher.getInstance(ALGORITHM);          &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            CipherInputStream cin      =           new      CipherInputStream(in, cipher);         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;                 byte     [] cache      =           new           byte     [CACHE_SIZE];         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;                 int      nRead      =           0     ;         &lt;br /&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;                 while      ((nRead      =      cin.read(cache))      !=           -     1     )               &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;           {          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;                out.write(cache,       0      , nRead);          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;                out.flush();          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;            }              &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            out.close();         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            cin.close();         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            in.close();         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;        }            &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;    }          &lt;br /&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;           &lt;br /&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;       /** */       /**            &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;p&amp;gt;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * 解密        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;/p&amp;gt;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *         &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *     @param     data        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *     @param     key        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *     @return            &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *     @throws     Exception        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;         */          &lt;br /&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;       public       static       byte   [] decrypt(   byte   [] data, String key)    throws    Exception           &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;       {        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        Key k     =     toKey(Base64Utils.decode(key));        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            byte    [] raw     =     k.getEncoded();         &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        SecretKeySpec secretKeySpec     =         new     SecretKeySpec(raw, ALGORITHM);         &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        Cipher cipher     =     Cipher.getInstance(ALGORITHM);         &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            return     cipher.doFinal(data);        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;    }          &lt;br /&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;           &lt;br /&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;       /** */       /**            &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;p&amp;gt;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * 文件解密        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;/p&amp;gt;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *         &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *     @param     key        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *     @param     sourceFilePath        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *     @param     destFilePath        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *     @throws     Exception        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;         */          &lt;br /&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;       public       static       void    decryptFile(String key, String sourceFilePath, String destFilePath)    throws    Exception           &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;       {        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        File sourceFile     =         new     File(sourceFilePath);        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        File destFile     =         new     File(destFilePath);         &lt;br /&gt;        &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;        &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;            if     (sourceFile.exists()     &amp;amp;&amp;amp;     sourceFile.isFile())             &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;         {         &lt;br /&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;                 if      (     !     destFile.getParentFile().exists())               &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;           {          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;                destFile.getParentFile().mkdirs();          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;            }              &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            destFile.createNewFile();         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            FileInputStream in      =           new      FileInputStream(sourceFile);         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            FileOutputStream out      =           new      FileOutputStream(destFile);         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            Key k      =      toKey(Base64Utils.decode(key));         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;                 byte     [] raw      =      k.getEncoded();          &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            SecretKeySpec secretKeySpec      =           new      SecretKeySpec(raw, ALGORITHM);          &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            Cipher cipher      =      Cipher.getInstance(ALGORITHM);          &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            CipherOutputStream cout      =           new      CipherOutputStream(out, cipher);         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;                 byte     [] cache      =           new           byte     [CACHE_SIZE];         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;                 int      nRead      =           0     ;         &lt;br /&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;                 while      ((nRead      =      in.read(cache))      !=           -     1     )               &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;           {          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;                cout.write(cache,       0      , nRead);          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;                cout.flush();          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;            }              &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            cout.close();         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            out.close();         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            in.close();         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;        }            &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;    }          &lt;br /&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;           &lt;br /&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;       /** */       /**            &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;p&amp;gt;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * 转换密钥        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;/p&amp;gt;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *         &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *     @param     key        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *     @return            &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *     @throws     Exception        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;         */          &lt;br /&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;       private       static    Key toKey(   byte   [] key)    throws    Exception           &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;       {        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        SecretKey secretKey     =         new     SecretKeySpec(key, ALGORITHM);        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            return     secretKey;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;    }          &lt;br /&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;           &lt;br /&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif"&gt;&lt;/img&gt;}        &lt;br /&gt;      &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;&lt;/div&gt;   &lt;br /&gt;   &lt;br /&gt;Base64Utils.java（依赖javabase64-1.3.1.jar）   &lt;br /&gt;   &lt;div&gt;     &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;  package   demo.security;      &lt;br /&gt;      &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;      &lt;br /&gt;      &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;  import   java.io.ByteArrayInputStream;      &lt;br /&gt;      &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;  import   java.io.ByteArrayOutputStream;      &lt;br /&gt;      &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;  import   java.io.File;      &lt;br /&gt;      &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;  import   java.io.FileInputStream;      &lt;br /&gt;      &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;  import   java.io.FileOutputStream;      &lt;br /&gt;      &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;  import   java.io.InputStream;      &lt;br /&gt;      &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;  import   java.io.OutputStream;      &lt;br /&gt;      &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;      &lt;br /&gt;      &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;  import   it.sauronsoftware.base64.Base64;      &lt;br /&gt;      &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;      &lt;br /&gt;      &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif"&gt;&lt;/img&gt;      &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif"&gt;&lt;/img&gt;  /** */     /**          &lt;br /&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt; * &amp;lt;p&amp;gt;       &lt;br /&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt; * BASE64编码解码工具包       &lt;br /&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt; * &amp;lt;/p&amp;gt;       &lt;br /&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt; * &amp;lt;p&amp;gt;       &lt;br /&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt; * 依赖javabase64-1.3.1.jar       &lt;br /&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt; * &amp;lt;/p&amp;gt;       &lt;br /&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt; *        &lt;br /&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt; *    @author    IceWee       &lt;br /&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt; * @date 2012-5-19       &lt;br /&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt; *    @version    1.0       &lt;br /&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif"&gt;&lt;/img&gt;    */        &lt;br /&gt;      &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif"&gt;&lt;/img&gt;      &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif"&gt;&lt;/img&gt;  public     class   Base64Utils         &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;     {       &lt;br /&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;       &lt;br /&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;       /** */       /**            &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * 文件读取缓冲区大小        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;         */          &lt;br /&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;       private       static       final       int    CACHE_SIZE    =       1024   ;       &lt;br /&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;           &lt;br /&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;       /** */       /**            &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;p&amp;gt;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * BASE64字符串解码为二进制数据        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;/p&amp;gt;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *         &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *     @param     base64        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *     @return            &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *     @throws     Exception        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;         */          &lt;br /&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;       public       static       byte   [] decode(String base64)    throws    Exception           &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;       {        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            return     Base64.decode(base64.getBytes());        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;    }          &lt;br /&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;           &lt;br /&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;       /** */       /**            &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;p&amp;gt;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * 二进制数据编码为BASE64字符串        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;/p&amp;gt;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *         &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *     @param     bytes        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *     @return            &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *     @throws     Exception        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;         */          &lt;br /&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;       public       static    String encode(   byte   [] bytes)    throws    Exception           &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;       {        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            return         new     String(Base64.encode(bytes));        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;    }          &lt;br /&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;           &lt;br /&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;       /** */       /**            &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;p&amp;gt;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * 将文件编码为BASE64字符串        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;/p&amp;gt;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;p&amp;gt;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * 大文件慎用，可能会导致内存溢出        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;/p&amp;gt;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *         &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *     @param     filePath 文件绝对路径        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *     @return            &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *     @throws     Exception        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;         */          &lt;br /&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;       public       static    String encodeFile(String filePath)    throws    Exception           &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;       {        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            byte    [] bytes     =     fileToByte(filePath);        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            return     encode(bytes);        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;    }          &lt;br /&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;           &lt;br /&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;       /** */       /**            &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;p&amp;gt;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * BASE64字符串转回文件        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;/p&amp;gt;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *         &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *     @param     filePath 文件绝对路径        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *     @param     base64 编码字符串        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *     @throws     Exception        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;         */          &lt;br /&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;       public       static       void    decodeToFile(String filePath, String base64)    throws    Exception           &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;       {        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            byte    [] bytes     =     decode(base64);        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        byteArrayToFile(bytes, filePath);        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;    }          &lt;br /&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;           &lt;br /&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;       /** */       /**            &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;p&amp;gt;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * 文件转换为二进制数组        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;/p&amp;gt;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *         &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *     @param     filePath 文件路径        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *     @return            &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *     @throws     Exception        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;         */          &lt;br /&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;       public       static       byte   [] fileToByte(String filePath)    throws    Exception           &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;       {        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            byte    [] data     =         new         byte    [    0    ];        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        File file     =         new     File(filePath);        &lt;br /&gt;        &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;        &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;            if     (file.exists())             &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;         {         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            FileInputStream in      =           new      FileInputStream(file);         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            ByteArrayOutputStream out      =           new      ByteArrayOutputStream(     2048     );         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;                 byte     [] cache      =           new           byte     [CACHE_SIZE];         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;                 int      nRead      =           0     ;         &lt;br /&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;                 while      ((nRead      =      in.read(cache))      !=           -     1     )               &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;           {          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;                out.write(cache,       0      , nRead);          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;                out.flush();          &lt;br /&gt;          &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;            }              &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            out.close();         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            in.close();         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            data      =      out.toByteArray();         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;         }            &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            return     data;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;    }          &lt;br /&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;           &lt;br /&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;       /** */       /**            &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;p&amp;gt;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * 二进制数据写文件        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     * &amp;lt;/p&amp;gt;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *         &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *     @param     bytes 二进制数据        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;     *     @param     filePath 文件生成目录        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;         */          &lt;br /&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;       public       static       void    byteArrayToFile(   byte   [] bytes, String filePath)    throws    Exception           &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;       {        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        InputStream in     =         new     ByteArrayInputStream(bytes);           &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        File destFile     =         new     File(filePath);        &lt;br /&gt;        &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;        &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;            if     (    !    destFile.getParentFile().exists())             &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;         {         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            destFile.getParentFile().mkdirs();         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;        }            &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        destFile.createNewFile();        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        OutputStream out     =         new     FileOutputStream(destFile);        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            byte    [] cache     =         new         byte    [CACHE_SIZE];        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            int     nRead     =         0    ;        &lt;br /&gt;        &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;        &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;            while     ((nRead     =     in.read(cache))     !=         -    1    )             &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;         {            &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            out.write(cache,      0     , nRead);         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            out.flush();         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;        }            &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        out.close();        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        in.close();        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;    }          &lt;br /&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;           &lt;br /&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;           &lt;br /&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif"&gt;&lt;/img&gt;}        &lt;br /&gt;      &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;&lt;/div&gt;   &lt;br /&gt;   &lt;br /&gt;AESTester.java   &lt;br /&gt;   &lt;div&gt;     &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;  package   demo.security;      &lt;br /&gt;      &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;      &lt;br /&gt;      &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif"&gt;&lt;/img&gt;      &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif"&gt;&lt;/img&gt;  public     class   AESTester         &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;     {       &lt;br /&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;           &lt;br /&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;       static    String key;       &lt;br /&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;           &lt;br /&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;       static              &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;       {        &lt;br /&gt;        &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;        &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;            try                 &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;         {         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            key      =      AESUtils.getSecretKey();         &lt;br /&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;         &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;        }         catch     (Exception e)             &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;         {         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            e.printStackTrace();         &lt;br /&gt;         &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;        }            &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;    }          &lt;br /&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;       &lt;br /&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;       public       static       void    main(String[] args)    throws    Exception           &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;       {        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            long     begin     =     System.currentTimeMillis();        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        encryptFile();        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        decryptFile();        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        test();        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            long     end     =     System.currentTimeMillis();        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        System.err.println(    &amp;quot;    耗时：    &amp;quot;         +     (end    -    begin)    /    1000         +         &amp;quot;    秒        &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;    &amp;quot;    );        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;    }          &lt;br /&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;           &lt;br /&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;       static       void    encryptFile()    throws    Exception           &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;       {        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        String sourceFilePath     =         &amp;quot;    D:/demo.mp4    &amp;quot;    ;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        String destFilePath     =         &amp;quot;    D:/demo_encrypted.mp4    &amp;quot;    ;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        AESUtils.encryptFile(key, sourceFilePath, destFilePath);        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;    }          &lt;br /&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;           &lt;br /&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;       static       void    decryptFile()    throws    Exception           &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;       {        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        String sourceFilePath     =         &amp;quot;    D:/demo_encrypted.mp4    &amp;quot;    ;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        String destFilePath     =         &amp;quot;    D:/demo_decrypted.mp4    &amp;quot;    ;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        AESUtils.decryptFile(key, sourceFilePath, destFilePath);        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;    }          &lt;br /&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;           &lt;br /&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif"&gt;&lt;/img&gt;       &lt;img align="top" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif"&gt;&lt;/img&gt;       static       void    test()    throws    Exception           &lt;img alt="" src="http://www.blogjava.net/Images/dot.gif"&gt;&lt;/img&gt;       {        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        String source     =         &amp;quot;    这是一行测试DES加密/解密的文字，你看完也等于没看，是不是啊？！    &amp;quot;    ;        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        System.err.println(    &amp;quot;    原文:\t    &amp;quot;         +     source);        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            byte    [] inputData     =     source.getBytes();        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        inputData     =     AESUtils.encrypt(inputData, key);        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        System.err.println(    &amp;quot;    加密后:\t    &amp;quot;         +     Base64Utils.encode(inputData));        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;            byte    [] outputData     =     AESUtils.decrypt(inputData, key);        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        String outputStr     =         new     String(outputData);        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;        System.err.println(    &amp;quot;    解密后:\t    &amp;quot;         +     outputStr);        &lt;br /&gt;        &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"&gt;&lt;/img&gt;    }          &lt;br /&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif"&gt;&lt;/img&gt;       &lt;br /&gt;       &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif"&gt;&lt;/img&gt;}        &lt;br /&gt;      &lt;img align="top" alt="" src="http://www.blogjava.net/Images/OutliningIndicators/None.gif"&gt;&lt;/img&gt;&lt;/div&gt; &lt;/div&gt;</description>
      <category>blogjava</category>
      <guid isPermaLink="true">http://itnewsvendor.appspot.com/6517033-java_aes_%E6%96%87%E4%BB%B6.html</guid>
      <pubDate>Sat, 19 May 2012 10:30:46 UTC</pubDate>
    </item>
    <item>
      <title>Cucumber---行为驱动开发的利器(一)</title>
      <link>http://itnewsvendor.appspot.com/6508045-cucumber_%E8%A1%8C%E4%B8%BA_%E9%A9%B1%E5%8A%A8.html</link>
      <description>&lt;div&gt;一 BDD   &lt;br /&gt;   &lt;div&gt;   Behavior-Driven Development is about implementing an application by describing its behavior from the perspective of its stakeholders.&lt;/div&gt;   &lt;div&gt;这里需要注意两点：&lt;/div&gt;   &lt;div&gt;1)stakeholders：软件的使用者，受益者，通俗的说就是软件的客户。&lt;/div&gt;   &lt;div&gt;2)behavior：这里的behavior，指的是从stakeholders的角度看到的软件系统的行为。&lt;/div&gt;   &lt;div&gt;&lt;/div&gt;   &lt;div&gt;BDD的作用：&lt;/div&gt;   &lt;div&gt;其实BDD和agile是紧密相关的。在agile中，我们使用BDD测试作为acceptance test。也就是说，当分析出一个user story后，我们应该有一个BDD的case与之对应，作为衡量软件是否满足该需求的一个标准。其实，从某种程度上讲，BDD就是TDD的发展，BDD出现的背景，就是开发人员在TDD时，不清楚到底该将一个什么样的story作为自己TDD开发需要实现的目标。&lt;/div&gt;   &lt;div&gt;而BDD简单的回答了这个问题：让stakeholders用一个test case告诉你，你的具体目标是什么。同时强调了，每一个开发目标都应该是系统的behavior的体现。&lt;/div&gt;   &lt;div&gt;     &lt;br /&gt;BDD的三原则：&lt;/div&gt;   &lt;div&gt;We sum this up using the following three principles of BDD:&lt;/div&gt;   &lt;div&gt;Enough is enough:       &lt;br /&gt;Up-front planning, analysis, and design all have a diminishing return. We shouldn’t do less than we need to get started, but any more than that is wasted effort. This also applies to process automation. Have an automated build and deployment, but avoid trying to automate everything.&lt;/div&gt;   &lt;div&gt;这一点秉承的原则：不做多余的事。&lt;/div&gt;   &lt;div&gt;&lt;/div&gt;   &lt;div&gt;Deliver stakeholder value:     &lt;br /&gt;If you are doing something that isn’t either delivering value or increasing your ability to deliver value, stop doing it, and do something else instead.&lt;/div&gt;   &lt;div&gt;这一点秉承的原则：做对客户有价值的事。     &lt;br /&gt;     &lt;br /&gt;It’s all behavior：&lt;/div&gt;   &lt;div&gt; Whether at the code level, the application level, or beyond, we can use the same thinking and the same linguistic constructs to describe behavior at any level of granularity.&lt;/div&gt;   &lt;div&gt;这一点秉承的原则：实现的都是有价值的行为。     &lt;br /&gt;&lt;/div&gt;   &lt;hr&gt;&lt;/hr&gt;二 Cucumber   &lt;br /&gt;      &lt;a href="http://cukes.info/"&gt;Cucumber&lt;/a&gt; 是一个基于BDD的测试框架，它能够帮助团队使用业务上的语言对软件系统的行为进行测试。同单元测试相比，Cucumber的测试更多关注的是业务级别的行为，因此非开发人员、业务专家或者客户能够容易的参与，从而保证软件系统的行为切实符合业务需求。同时，通过Cucumber的测试，开发人员也能更正确、清晰的理解业务需求，保证开发出来的系统满足客户的期望。由于Cucumber采用几乎近于自然语言的方式描述了软件的行为过程，因此可以直接作为软件的需求文档，也可以直接作为测试或者系统验收的标准文档。  这种方式也淋漓尽致的体现了敏捷的思想：代码即是最有效的文档。   &lt;br /&gt;   &lt;hr&gt;&lt;/hr&gt;   &lt;br /&gt;三 Cucumber的概念     &lt;br /&gt;Cucumber中有几个重要的概念：    &lt;br /&gt;1. Feature   &lt;br /&gt;    Feature指的是软件系统所提供的某个功能，一般对应 User Story。在一个Cucumber 的feature文件中，主要定义了用户如何使用软件提供的该功能。通常我们这样定义feature：    &lt;br /&gt;   &lt;div&gt;Feature: &amp;lt;description&amp;gt;      &lt;br /&gt;   As a &amp;lt;role&amp;gt;     &lt;br /&gt;   I want &amp;lt;feature&amp;gt;     &lt;br /&gt;   So that &amp;lt;business value&amp;gt;&lt;/div&gt;即作为某个角色，我想使用系统做些事情，从而得到期望的实现业务价值的结果。     &lt;br /&gt;在feature的定义中，通常会涉及如下几个问题：   &lt;br /&gt;   a)  Who is using the system?   &lt;br /&gt;   b)  What are they doing?   &lt;br /&gt;   c)  Why do they care?    &lt;br /&gt;   &lt;br /&gt;比如说：     &lt;br /&gt;   &lt;div&gt;Feature: Adding the numbers by calculator     &lt;br /&gt;   As a customer,     &lt;br /&gt;   I want to calculate the two numbers,     &lt;br /&gt;  so that I can get the right results. &lt;/div&gt;   &lt;br /&gt;通常一个feature文件中会包括一个或者多个Scenario。   &lt;br /&gt;   &lt;hr&gt;&lt;/hr&gt;   &lt;br /&gt;2. Scenario    &lt;br /&gt;   Scenario描述了用户使用软件的场景，即在某种前提条件下，当用户使用软件触发某个行为，那么应该会得到一个预期的结果。 比如说：     &lt;br /&gt;   &lt;br /&gt;   &lt;div&gt; Scenario: Add two numbers         &lt;br /&gt;  Given the input &amp;quot;2+2&amp;quot;         &lt;br /&gt;  When the calculator is run         &lt;br /&gt;  Then the output should be &amp;quot;4&amp;quot;  &lt;/div&gt;   &lt;br /&gt;即当使用计算器求和时，假如给定了2+2的前提条件，那么当点击计算时，期望的结果应该是4.    &lt;br /&gt;   &lt;br /&gt;通常Scenario由一组步骤(step)组成。   &lt;br /&gt;   &lt;hr&gt;&lt;/hr&gt;   &lt;br /&gt;3. Step     &lt;br /&gt;   Step 描述了在完成一次同软件交互的过程中，所需要的每个动作。    &lt;br /&gt;  通常有三种step：    &lt;br /&gt;    1) 给定的条件(Given)    &lt;br /&gt;    2)触发的行为(When)    &lt;br /&gt;    3)期待的结果(Then)    &lt;br /&gt; 比如上个例子中定义当完成一次计算两数相加的行为时，需要3个步骤    &lt;br /&gt;   &lt;br /&gt;   &lt;div&gt;Given the input &amp;quot;2+2&amp;quot;               //  步骤1，确定前提条件，如我希望计算的数字是2+2；            &lt;br /&gt;When the calculator is run         //  步骤2，运行计算器，并开始计算；            &lt;br /&gt;Then the output should be &amp;quot;4&amp;quot;    //  步骤3， 验证期待的结果是4.       &lt;br /&gt;&lt;/div&gt;   &lt;hr&gt;&lt;/hr&gt;   &lt;br /&gt;4. Step definition(implementations)    &lt;br /&gt;   Step是使用业务层面的描述语言完成的，比如刚才提到的测试计算器的例子。 针对这种业务层面的描述语言，必然有对应的技术层面的实现，才能将这些业务描述语言转变成对系统进行测试的代码。 我们称这种对业务语言的技术实现为step definition.   比如对上个例子的step，我们使用的实现伪代码如下所示 ：   &lt;br /&gt;   &lt;div&gt;Given /^the input([^&amp;quot;]*)&amp;quot;$/   do |input_number|       &lt;br /&gt;    //  get the input expression by the regexp match           &lt;br /&gt;  input = input_number     &lt;br /&gt;end      &lt;br /&gt;     &lt;br /&gt;When /^the calculator is run$/   do       &lt;br /&gt;    //  run the calculator and trigger it to do calculation by input            &lt;br /&gt;  result = calculator(input)     &lt;br /&gt;end     &lt;br /&gt;     &lt;br /&gt;Then /^the output should be ([^&amp;quot;]*)&amp;quot;$/   do |expected_result|       &lt;br /&gt;    //  get the expected result by the regexp match        &lt;br /&gt;    //  verify whether the result is as we expected         &lt;br /&gt;   result == expected_result     &lt;br /&gt;end&lt;/div&gt;   &lt;br /&gt;   &lt;hr&gt;&lt;/hr&gt;四 总结   &lt;br /&gt;  本文介绍了BDD、Cucumber的背景, 以及Cucumber中涉及的概念(Feature, Scenario, Step, Step definition)，后续将介绍如何使用Cucumber来帮助我们测试软件系统的行为。    &lt;br /&gt;    &lt;div&gt;&lt;/div&gt;   &lt;div&gt;&lt;/div&gt;    &lt;div&gt;&lt;/div&gt;    &lt;div&gt;&lt;/div&gt;&lt;/div&gt;</description>
      <category>blogjava</category>
      <guid isPermaLink="true">http://itnewsvendor.appspot.com/6508045-cucumber_%E8%A1%8C%E4%B8%BA_%E9%A9%B1%E5%8A%A8.html</guid>
      <pubDate>Sat, 19 May 2012 10:30:43 UTC</pubDate>
    </item>
    <item>
      <title>Mozilla Firefox 5:从卓越到平庸 ?</title>
      <link>http://itnewsvendor.appspot.com/6517032-mozilla_firefox_%E5%8D%93%E8%B6%8A.html</link>
      <description>&lt;div&gt;





	        &lt;div&gt;





  





&lt;/div&gt;





	        &lt;div&gt;











  





&lt;/div&gt;











			　　    &lt;p&gt; 一. 不知道大家是否还记得在发布firefox 4正式版之后，Mozilla的设计师们发布了下一代Firefox 5 浏览器的用户界面:&lt;/p&gt;
   &lt;p&gt; &lt;/p&gt;
   &lt;div&gt;
     &lt;div&gt;       &lt;img alt="Mozilla:从卓越到平庸 ?" src="http://www.linuxeden.com/upimg/allimg/120518/15242aD1-0.jpg"&gt;&lt;/img&gt;&lt;/div&gt;
&lt;/div&gt;
   &lt;p&gt;图为firefox5的概念设计图，这个设计是浏览器搜索的最棒设计&lt;/p&gt;
   &lt;p&gt;1.搜索框无内容时，搜索按钮无颜色，不会分散用户的注意力&lt;/p&gt;
   &lt;p&gt;2.搜索框键入文字时，搜索按钮变色（1）凸显搜索按钮（2）色彩分割搜索按钮，有质感，便于用户点击.&lt;/p&gt;
   &lt;p&gt;然而mozilla公司最后并未使用这个优秀的设计，最新的正式版firefox 12 依然是老样子&lt;/p&gt;
   &lt;div&gt;     &lt;img alt="Mozilla:从卓越到平庸 ?" src="http://www.linuxeden.com/upimg/allimg/120518/1524292J6-1.jpg"&gt;&lt;/img&gt;&lt;/div&gt;
   &lt;p&gt; &lt;/p&gt;
   &lt;p&gt;（现在的firefox搜索样式）&lt;/p&gt;
   &lt;p&gt;二 .    当时我看到firefox 5 的这张设计图，我就被吸引住了，非常实用而美观的设计！使用firefox访问设社交网站，邮箱……将会变得越来越方便（mozilla未使用）&lt;/p&gt;
   &lt;div&gt;     &lt;img alt="Mozilla:从卓越到平庸 ?" src="http://www.linuxeden.com/upimg/allimg/120518/1524292T0-2.jpg"&gt;&lt;/img&gt;&lt;/div&gt;
   &lt;p&gt; &lt;/p&gt;
   &lt;p&gt; （当初的设计）&lt;/p&gt;
   &lt;p&gt;三 .  命运多舛的快速拨号&lt;/p&gt;
   &lt;p&gt;这是Mozilla公布的有关Firefox 12的截图，整合即时聊天功能，当初十分期待这个功能。&lt;/p&gt;
   &lt;p&gt;而快速拨号的样式简洁，漂亮。对比下面的快速拨号样式，原设计好处颇多&lt;/p&gt;
   &lt;p&gt;1.利用黑色透明层凸显网页的标题，一目了然&lt;/p&gt;
   &lt;p&gt;2.网页的缩略图不可能是完美漂亮的，更多的时候，缩略图是丑陋的，用户没有这么多时间去管你的缩略图，这个时候适当的遮蔽部分网页缩略图还是很有必要的。&lt;/p&gt;
   &lt;p&gt; &lt;/p&gt;
   &lt;div&gt;     &lt;img alt="Mozilla:从卓越到平庸 ?" src="http://www.linuxeden.com/upimg/allimg/120518/1524295B1-3.jpg"&gt;&lt;/img&gt;&lt;/div&gt;
   &lt;div&gt;     &lt;img alt="Mozilla:从卓越到平庸 ?" src="http://www.linuxeden.com/upimg/allimg/120518/1524292356-4.jpg"&gt;&lt;/img&gt;&lt;/div&gt;
   &lt;p&gt; &lt;/p&gt;
   &lt;p&gt;（firefox原设计）&lt;/p&gt;
   &lt;div&gt;     &lt;img alt="Mozilla:从卓越到平庸 ?" src="http://www.linuxeden.com/upimg/allimg/120518/1524292226-5.jpg"&gt;&lt;/img&gt;&lt;/div&gt;
   &lt;p&gt; &lt;/p&gt;
   &lt;p&gt;（目前firefox13样式）&lt;/p&gt;
   &lt;p&gt; 四.而metro版本的firefox似乎在设计上更加失败&lt;/p&gt;
   &lt;p&gt;大家注意“标签的关闭按钮”与“新建标签按钮”这样的样式用户操作起来会很困难的（对比对比metro版本的IE）&lt;/p&gt;
   &lt;div&gt;     &lt;img alt="Mozilla:从卓越到平庸 ?" src="http://www.linuxeden.com/upimg/allimg/120518/1524291062-6.jpg"&gt;&lt;/img&gt;&lt;/div&gt;
   &lt;p&gt; &lt;/p&gt;
   &lt;p&gt;（metro版本firefox）&lt;/p&gt;
   &lt;p&gt; &lt;/p&gt;
   &lt;div&gt;     &lt;img alt="Mozilla:从卓越到平庸 ?" src="http://www.linuxeden.com/upimg/allimg/120518/1524294117-7.jpg"&gt;&lt;/img&gt;
     &lt;div&gt; &lt;/div&gt;
&lt;/div&gt;
   &lt;p&gt; &lt;/p&gt;


			   &lt;div&gt;
     &lt;input name="wurl" type="hidden" value="http://www.linuxeden.com/html/news/20120518/124375.html"&gt;&lt;/input&gt;
     &lt;input name="wtitle" type="hidden" value="Mozilla Firefox 5:从卓越到平庸 ?  "&gt;&lt;/input&gt;
         &lt;input name="wpic" type="hidden" value="http://www.linuxeden.com/upimg/allimg/120518/1_051Q524363W2.jpg"&gt;&lt;/input&gt;
&lt;/div&gt;
   &lt;p&gt;
    
&lt;/p&gt;
 

			 











			&lt;/div&gt;</description>
      <category>linux</category>
      <guid isPermaLink="true">http://itnewsvendor.appspot.com/6517032-mozilla_firefox_%E5%8D%93%E8%B6%8A.html</guid>
      <pubDate>Sat, 19 May 2012 00:30:23 UTC</pubDate>
    </item>
    <item>
      <title>Fedora 17中Plasma桌面小程序自动依赖解决</title>
      <link>http://itnewsvendor.appspot.com/6508044-fedora_plasma_%E6%A1%8C%E9%9D%A2.html</link>
      <description>&lt;div&gt;





	        &lt;div&gt;





  





&lt;/div&gt;





	        &lt;div&gt;











  





&lt;/div&gt;











			　　    &lt;div&gt;
     &lt;div&gt;包含大量创新性功能的 Fedora 17 也不会忘记 KDE 用户群体，率先实现了 KDE Plasma 桌面小程序控件的依赖关系自动解决。       &lt;p&gt;&lt;/p&gt;       &lt;p&gt;Plasma 桌面小程序具有两种不同的形式：&lt;/p&gt;       &lt;p&gt;使用 C++ 撰写的小程序只能通过发行版打包或者自己编译的方式安装。&lt;/p&gt;       &lt;p&gt;使用各式脚本语言并遵循开放互联服务标准(OCS)的可以通过 Plasma 内置的下载对话框进行安装和管理。&lt;/p&gt;       &lt;p&gt;为了实现小程序的正常运行，又有两方面的东西需要安装：&lt;/p&gt;       &lt;p&gt;脚本引擎：如果小程序是用脚本语言编写，那么对应语言的脚本引擎是必需品，否则小程序将抛错拒绝工作。&lt;/p&gt;       &lt;p&gt;数据引擎：各种提供应用程序所需要的数据内容的组件，若是没有则小程序运行异常。&lt;/p&gt;       &lt;p&gt;目前各类发行版对于以上这些问题的处理方式有：&lt;/p&gt;       &lt;p&gt;仓库中的小程序由发行版打包者人工处理依赖关系，但是问题是工作量巨大且容易出错。&lt;/p&gt;       &lt;p&gt;对于互联网提供的诸多小程序则完全交由最终用户去解决依赖关系问题，不可避免会遇到很多异常和抛错。&lt;/p&gt;       &lt;p&gt;在 Fedora 17 中通过 KPackageKit/Apper 与 KDE 上游社区的合作，三种途径同时发力去解决 Plasma 的依赖关系：&lt;/p&gt;       &lt;p&gt;上游要求 Plasma 小程序在元数据中明确指定依赖关系。&lt;/p&gt;       &lt;p&gt;安装过程中 KPackageKit/Apper 从源代码中抓取依赖关系。&lt;/p&gt;       &lt;p&gt;在小程序运行时再下载所缺失的依赖关系。&lt;/p&gt;       &lt;p&gt;于是乎 Fedora 17 KDE 的用户将从此告别 Plasma 小程序依赖关系所带来的烦心问题了。&lt;/p&gt;       &lt;p&gt;秉承 Fedora 一贯坚持的上游紧密合作传统，该功能已经合并入上游，很快所有使用 PackageKit 的 KDE 发行版都将可以享受到它带来的便利（使用 aptdaemon 的 Kubuntu 于此无缘）。&lt;/p&gt;       &lt;p&gt;         &lt;a href="http://fedoraproject.org/wiki/Features/Plasma_PackageKit_Integration"&gt;该功能详细说明&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;

&lt;/div&gt;


			   &lt;div&gt;
     &lt;input name="wurl" type="hidden" value="http://www.linuxeden.com/html/news/20120518/124376.html"&gt;&lt;/input&gt;
     &lt;input name="wtitle" type="hidden" value="Fedora 17中Plasma桌面小程序自动依赖解决 "&gt;&lt;/input&gt;
         &lt;input name="wpic" type="hidden" value=""&gt;&lt;/input&gt;
&lt;/div&gt;
   &lt;p&gt;
    
&lt;/p&gt;
 

			 











			&lt;/div&gt;</description>
      <category>linux</category>
      <guid isPermaLink="true">http://itnewsvendor.appspot.com/6508044-fedora_plasma_%E6%A1%8C%E9%9D%A2.html</guid>
      <pubDate>Sat, 19 May 2012 00:30:20 UTC</pubDate>
    </item>
  </channel>
</rss>



