﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-都市淘沙者-文章分类-加密解密/其他分类</title><link>http://www.blogjava.net/jelver/category/18446.html</link><description>每天进步一点点</description><language>zh-cn</language><lastBuildDate>Thu, 09 Aug 2012 14:58:47 GMT</lastBuildDate><pubDate>Thu, 09 Aug 2012 14:58:47 GMT</pubDate><ttl>60</ttl><item><title>高露茶--三江茶叶的新突破[转载]</title><link>http://www.blogjava.net/jelver/articles/385184.html</link><dc:creator>都市淘沙者</dc:creator><author>都市淘沙者</author><pubDate>Thu, 09 Aug 2012 14:54:00 GMT</pubDate><guid>http://www.blogjava.net/jelver/articles/385184.html</guid><wfw:comment>http://www.blogjava.net/jelver/comments/385184.html</wfw:comment><comments>http://www.blogjava.net/jelver/articles/385184.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jelver/comments/commentRss/385184.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jelver/services/trackbacks/385184.html</trackback:ping><description><![CDATA[<div>
<div>高露茶--三江茶叶的新突破</div>
<div><a>2012-08-09 10:37:58</a> 来源: 作者:<a href="http://www.gaolucha.com">三江茶叶资讯网</a></div>
<span id="post1">
<p> <span id="post1"><a href="http://d.lotour.com/guangxi/" target="_blank">&nbsp;&nbsp;&nbsp; 广西</a>三江侗族自治县地处湘、黔、桂三省(区)交界处,位于广西北部山区,属云贵高原余脉边缘的中、低山和丘陵地带</span><span id="post1">，全县共有约10.2万亩茶园，其中<a href="http://www.gaolucha.com/" style="text-decoration:underline;font-size:14px;color:#F70968;" target="_blank">高露茶</a>是 三江最具有特色的本土茶叶品种之一，一直以来高露煮茶都是备受当地人喜爱的油茶原料之一，由于茶叶原料水分充足，粘性大，成色灰暗，汤色青黄，口感苦凉， 很难向高端茶叶突破。2012年在县政府，乡政府领导推动下，该县多次邀请中国农科院，浙江大学，安徽大学等专家领导到该县洋溪乡高露村对当地老茶树进行 调研，取样实验，力争打造三江特有品牌，在专家的指引下，三江<a href="http://www.gaolucha.com/" style="text-decoration:underline;font-size:14px;color:#F70968;" target="_blank">高露茶</a>厂赖庆安通过多次加工实验，终于可以将高露茶加工成具有地方特色的红茶绿茶，其加工的红茶肥壮紧实，金毫显露，色泽鲜亮，汤色鲜红，口感细腻，鲜而爽口，回味甘和，并带有浓郁持久的花果香，绿茶</span>干茶色泽翠绿；茶汤清绿透亮；叶底明亮；香气清新、口感醇香清甜，从而一改高露茶口感苦涩的特性茶叶。茶叶价格也有原来的20元一斤升到200元一斤，茶农的收入也得到相应的提高，越来越多的人加入到高档茶加工行业中来。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如今洋溪乡高露村正在加大对原有高露茶品种的种植管理，改良，现高露村共有老茶树500亩，年产干茶叶约8000公斤。</p>
</span></div>
<img src ="http://www.blogjava.net/jelver/aggbug/385184.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jelver/" target="_blank">都市淘沙者</a> 2012-08-09 22:54 <a href="http://www.blogjava.net/jelver/articles/385184.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>花了65美刀注册了个域名</title><link>http://www.blogjava.net/jelver/articles/368601.html</link><dc:creator>都市淘沙者</dc:creator><author>都市淘沙者</author><pubDate>Mon, 16 Jan 2012 09:45:00 GMT</pubDate><guid>http://www.blogjava.net/jelver/articles/368601.html</guid><wfw:comment>http://www.blogjava.net/jelver/comments/368601.html</wfw:comment><comments>http://www.blogjava.net/jelver/articles/368601.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jelver/comments/commentRss/368601.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jelver/services/trackbacks/368601.html</trackback:ping><description><![CDATA[一直打算帮家里注册个域名来推广自己的茶叶生意，终于注册下来了，高露茶，在我们那里很出名哦，目前只用Goddday的默认页面，网站还得慢慢花时间来建立&lt;br/&gt;<br />
<a title="http://www.gaolucha.com" href="http://www.gaolucha.com">http://www.gaolucha.com</a>
<img src ="http://www.blogjava.net/jelver/aggbug/368601.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jelver/" target="_blank">都市淘沙者</a> 2012-01-16 17:45 <a href="http://www.blogjava.net/jelver/articles/368601.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何做创业项目的陈述和展示</title><link>http://www.blogjava.net/jelver/articles/354559.html</link><dc:creator>都市淘沙者</dc:creator><author>都市淘沙者</author><pubDate>Mon, 18 Jul 2011 12:01:00 GMT</pubDate><guid>http://www.blogjava.net/jelver/articles/354559.html</guid><wfw:comment>http://www.blogjava.net/jelver/comments/354559.html</wfw:comment><comments>http://www.blogjava.net/jelver/articles/354559.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jelver/comments/commentRss/354559.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jelver/services/trackbacks/354559.html</trackback:ping><description><![CDATA[<div><h2><a href="http://www.36kr.com/how-to-present-your-project/">如何做创业项目的陈述和展示</a></h2>   <p><img src="http://www.arshina.com/wp-content/uploads/2011/07/is098xl5k.jpg" alt="is098xl5k.jpeg" width="480" height="320" /></p> <p><strong>编者按</strong>：本文由<a href="http://www.arshina.com/">Gary Yang </a>撰写，他是一周多之前36氪 广州氪学社创业交流活动的主持人。</p> <p>一个星期前，我参加了科技博客36Kr的活动。这是一场半天时间的精彩活动，一场创业团队与VC、业内人士的交流的活动。</p> <p>作为活动的主持人，我有机会近距离接触创业团队，观察他们如何对项目做陈述展示、问题应答、提问互动。结合之前对创业团队的了解和观察，就产生了这样一篇文章。我想给创业团队一些建议，让他们的陈述和展示更好一些。</p> <p>* * *</p> <p>从产生一个好想法，到成为一门好生意，一直到成就一家好公司，这其间必不可少的一件事情，就是你要到处去宣讲、陈述，或者说是推介。作为创业者，你 要日复一日地向人们陈述宣讲，由于讲的很多，有时你可能都忘记了自己在推介：挑剔的投资者、热心的业内前辈、爱说话的网友粉丝、前来打探消息的媒体、办理 执照要讨好的主管部门、不请自来的顾问、亦敌亦友的同行、为你兴奋又担心的朋友家人、租用办公室的房东 &#8230; &#8230;  甚至包括劝你早点回家休息的清洁工阿姨，你都会跟他们说你在做的是怎么样一件事情。</p> <p>在所有陈述和推介的对象中，你可能最重视那些投资机构了。因为他们可能会为你生意注资，往往这刚好是你生意能否做起来的决定性力量。除此之外，投资机构也能从生意的大视角和过往的经验中为你的事业提出指导和建议，这也显得难能可贵。</p> <p>那么，我们怎么样做好创业项目的陈述和展示呢？</p> <h3><strong>开宗明义</strong></h3> <p>如果说只能提一个建议，我会建议创业者陈述自己的项目能做到&#8220;开宗明义&#8221;。</p> <p>寻找开宗明义的那句话有时真的很难。但在这个事情上花的所有精力，都将得到丰厚的回报。</p> <p>我们知道，即使象IBM、Intel、Sumsung、Philips这样的大公司，在提出新理念或者换一个新口号的时候，都是一件非常既费神又昂 贵的任务。本质上说，他们也在为自己找一句&#8220;开宗明义&#8221;的一句话。这句话能为整个生意带来不同凡响的效果。做这个事的成本当然不低，多数还会演变成一场公 司内部声势浩大的运动。公司还会寻求外部支持，所以，寻找&#8220;开宗明义&#8221;那句话也是很多营销顾问的谋生手段，是很多广告公司的赚钱业务。</p> <p>一般说来，好生意都有简明的逻辑。把事情的逻辑和因果关系弄的错综复杂也是有的，不过那通常是阴谋和诈骗，不是生意，至少不是个好生意。</p> <p>所以创业者应该能在开场的2分钟之内，就把自己的项目说清楚。找到言简意赅的一两句话，把自己项目说明白。现在，&#8220;请用一句话来描述一下你的项 目&#8221;，这几乎是一个众所周知的要求了。但是我发现，创业者们虽然也能用一两句话说了，但是一点也不明白，听众在那两句话里面抓不到什么实质性的信息。</p> <p>这是个问题，很明显，这还不是&#8220;开宗明义&#8221;的那句话。那怎么办？回家继续想继续找呗。跟语文能力好的师友对话并探讨，我相信你一定能为自己的项目找到一个好说法。</p> <h3><strong>简洁明了</strong></h3> <p>简洁明了是人人都赞同的优点，但知易行难。创业者为自己的陈述多做准备，加之临场经验的积累，会越来越好。</p> <p>如果我们去观察两个怀抱婴儿的妈妈会聊些什么，就会发现&#8220;语句散漫&#8221;的现象。通常那是一种极为琐碎和零散的对话。几乎见不到概括、提要、小结，全都 是细节，而且话题随性又漂移不定。这种常见于社区的草地边和公园的长椅上的对话，可以让两个新任妈妈在午后的闲适时光里享受好一阵温馨情调。但是把这种说 话方式拿到商务场合就不行了。</p> <p>不难理解，新任妈妈太爱自己的宝贝了，也许就是这种强烈的爱，导致了&#8220;语句散漫&#8221;。那么对于创业团队来说，会不会因为太爱自己的项目，而导致陈述演示的时候也&#8220;语句散漫&#8221;呢？嗯！这还是一个很普遍的现象呢。</p> <p>当创业者的陈述演示不够利落，铺排了很多才进入正题，然后又让听众左等又盼，才能听到对项目实质性的陈述，很明显，这就是进入了&#8220;语句散漫&#8221;的状态。</p> <p>这样不仅会把有限的陈述时间耗掉，而且也在挑战投资者聆听耐心的极限。同时，这会让人怀疑你对项目的理解是否足够深入，甚至干脆认为你是在努力把一个简单想法编造为一个神奇的故事，在忽悠人。</p> <p>其实我们在陈述演示的准备阶段，就应该自问：是不是由于太喜爱自己的项目 &#9472;&#9472; 这个自己的&#8220;亲骨肉&#8221;，而一头扎进了细节里去了？说的最多最细的部分，是不是仅仅因为自己对它最熟悉最热爱？</p> <p>简洁，是&#8220;用心割舍&#8221;的结果。而&#8220;用心割舍&#8221;，代表着良好的判断力。</p> <p>每一位讲者都认为自己的说话听众是喜欢聆听的。不幸的是，这只是一厢情愿的想法。只有让自己对项目的爱保持警惕和克制，才能把听众放在心上，认真考虑听众要听的是什么。这样，你的陈述才可能保持简洁。</p> <p>除此之外，说一些大家已知的东西，或者拿些网上的通用数据资料来讲些大道理，都是对听众缺乏了解，也是造成不够简洁的原因。</p> <h3><strong>不能叫卖</strong></h3> <p>陈述演示（Presentation）总体上说都是一种行销行为。但是不同类型Presentation的差异还是很大。比如：</p> <ul><li>销售演示 （Sales presentation）</li><li>向投资演示 （Investor presentation）</li></ul> <p>我们通常会缺乏向投资者演示的经验，但是很熟悉销售演示。但是两者不能简单等同，这是两种截然不同的演示。</p> <p>销售演示就是要卖东西，难免有鼓吹和自夸的成份。而鼓吹和自夸是在向投资演示中应该避免的。面对一个创业阶段的项目，你总体上要保持诚恳和客观的态度。</p> <p>一般来说，如果凭借吹嘘和引诱的花招来向顾客推销点什么东西，大家还能勉强接受（也可能是我们见怪不怪了）。但是面对经验老道的投资者做陈述和演示，创业者的诚意和项目的真实面貌是打动他们的力量。</p> <p>叫卖的方式行不通，所以我们无需为项目进行不必要的包装，无需为项目起个名不副实的华丽名称。也不要在演示过程中为自己的产品&#8220;上大词&#8221;，这都是为沟通设置了障碍。</p> <p>有些词汇很常见，但是它们的份量很重，尤其是真正的生意人都觉得它们的份量很重，比如：&#8220;平台&#8221;、&#8220;解决方案&#8221;、&#8220;一站式服务&#8221;等等。要仔细掂量一下你的项目是不是能用得上这样的词汇。</p> <p>如果投资者用浅白的语言来解释项目的时候，比如，他说：&#8220;你的项目本质上就是&#8230; &#8230;嘛！&#8221; 听起来项目好像&#8220;被贬低&#8221;了。如果是这样，我们应该检查一下，是不是在描述项目的时候&#8220;用词过猛&#8221;了。</p> <h3><strong>没有胜负</strong></h3> <p>投资者可以为创业者的项目做点评，给与或高或低的评价，投资或不投资，但他们仍然不是创业者的裁判。你真正的裁判是市场。</p> <p>36Kr这样的创业交流会，不是项目评审会，也不是大专辩论会。创业团队和投资者以及各方来宾，会就某一个问题产生异议和争论，通常这也是难免的事 情。争论来源于对问题的认知程度的不同，或者仅仅是因为他们的角色不一样。这样的争论有助于对事实的理解，本身并没有胜负的结果，而且多数争论的话题可能 根本就没有标准的答案。</p> <p>所以，没有裁判，不是辩论会，没有标准答案，更没有胜负输赢。</p> <p>当然，从我们的本性上看，人家在指出自己&#8220;宝贝项目&#8221;的不足和缺陷，可能还带着质疑和挑剔的语气，这让人不爽。于是，反驳甚至强有力的反击语言就会脱口而出。这让讨论会变成了辩论会。</p> <p>我们都知道大专辩论会已经演变成为一场游戏了，一场纯粹的口舌之争。谁又会把他们的辩论结果拿来成为自己的观念和行事准则呢？</p> <p>那么，我们就不要为此争口头胜负。</p> <p>虽然大家都说创业交流会是一个平等的对话交流。但是客观上看，创业的年轻人对投资者，社会地位、经验、资源都处于下风，创业者与投资者两方的博弈也是普遍而不争的事实。那么我们怎么能做到平等对话呢？</p> <p>我的建议是可以把这种交流当成一次相亲，或者仅仅是一次&#8220;出来喝一杯&#8221;的约会。婚礼和洞房之类的事还很遥远，那就保持一种不求不败的心境，把这次见面当成你认识一个朋友的机会吧。</p> <p>如果你想通了这是一次约会。那么现场你就不会显得&#8220;太紧&#8221;。如果你的项目还达不到令人震惊和肃然起敬的标准，那么就拿出欢乐的心态来和大家对话。</p> <p>与此对应的是，一个创业投资者，如果不能从内心里理解和喜爱创业者的青涩和的个性，不能理解项目的不足和欠缺，那么他一定不是个好的创业投资者。那么我们有理由相信他的视野太狭窄，急功近利，缺乏放眼未来的胸怀和眼光。</p> <p>如果你哪天遇到了这样的一位创业投资人，就好比你的约会对象根本就不是一位美女，而是一只恐龙。那么，请专心品尝完那杯咖啡，然后走人。</p> <h3><strong>真实应答</strong></h3> <p>你一定要知道，这世界上的问题太多，不必什么都有答案。你的项目也是。</p> <p>你再聪明也不可能回答得了所有的问题。尤其是你还在做一件未来某个时间才能成功的项目。所以不必为不能回答某些问题而感到羞涩。也不要为自己根本不知道答案的问题编造答案，或者仅仅嘴里嘟囔着一些自己也不理解的话语。</p> <p>勇敢的说我不知道，这完全是一种得体的应答，并无损于自身。</p> <p>总体上讲，在演示项目时要注意应答的多样性。建议如下：</p> <ul><li>有些问题是有答案的，如果知道就简短有力的回答。</li><li>有些问题根本就没有答案。那么直接说你不知道。</li><li>有些问题的确很难，你也不可能瞬间给提问者制造一个答案出来，直接说你要再想想。</li><li>有些问题被提出来，提问者自己也不认为会有好答案，他只是问问而已。那你就向他请教，问问他是怎么想的。</li><li>有问必答一定是失败的。听众会感觉场上来了一个万事通，对万事皆有答案。结果导致陈述中本来有说服力的那部分，也因为这种的态度给损掉，甚至连场面也输掉。</li></ul> <p>值得注意的是，有时投资人故意语意尖锐严厉，你也不要乱了阵脚，不要以为人家故意来折磨你。其实，他们很可能是在试探创业年轻人的&#8220;抗压能力&#8221;。也许他有点把这个测试提前了一些，但这恰恰说明了他可能&#8220;喜欢&#8221;上了你。</p> <h3><strong>英雄也要问出处</strong></h3> <p>我常常问那些准备去提案、投标、做项目陈述的人：&#8220;我们把所有资料寄送给客户就行了，为什么客户一定要见见我们？&#8221; 这是个好问题，因为你只有理解了客户要见你的原因，你才知道如何去做有针对性的准备。</p> <p>如果创业团队把完整的项目资料送给投资方，资料袋里包含了一切，甚至也把难懂的软件操作录成视频刻成光盘一同送过来。那么，是不是就不用亲自来演示自己的项目了？</p> <p>所有人都知道这不可以。为什么？</p> <p>有人说看资料很累，还可能会看不懂，有问题又没人即时解答，等等。但是这些都不是最重要的原因。最重要的是：人家要看看你是什么样的人！</p> <p>有人说，人（团队）的相关情况是项目的重要部分。我说不对。人的因素不是项目资料的一部分，它是所有部分的根。</p> <p>就像Gerald M. Weinberg说的那样：</p> <blockquote><p>无论问题最初看起来怎样，它始终是人的问题。</p></blockquote> <p>所以创业者少不了要对自己和团队的背景加以介绍，即使你的专业、履历和背景与这个项目无太大关联，你的思想、个性、价值观等等也会从过去经历中体现出来。</p> <p>介绍自己是一项既简单又困难的事情。听众对你的印象，一半来自你自我介绍的信息，另一半来自你自我介绍的态度。陈述者也不用费心去拿捏姿态，不用去想是保持高傲一些好，还是谦卑一些更有利，真实最为好。这不涉及攀比资历，有光鲜资历有更好，没有也无妨。</p> <p>&#8220;自我介绍&#8221;环节是值得去精心准备的。选择一个好的角度，完全可以把平凡的人生经历说得有趣而吸引人。还可以把自己的思考和体验融入进去，提升沟通的质量。</p> <p>* * *</p> 以上是我给出的几条建议。对于如何向投资者做陈述演示，我非常愿意听到这方面的意见和建议</div><img src ="http://www.blogjava.net/jelver/aggbug/354559.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jelver/" target="_blank">都市淘沙者</a> 2011-07-18 20:01 <a href="http://www.blogjava.net/jelver/articles/354559.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于AES（16字节）加密解密算法的java实现</title><link>http://www.blogjava.net/jelver/articles/346416.html</link><dc:creator>都市淘沙者</dc:creator><author>都市淘沙者</author><pubDate>Wed, 16 Mar 2011 10:11:00 GMT</pubDate><guid>http://www.blogjava.net/jelver/articles/346416.html</guid><wfw:comment>http://www.blogjava.net/jelver/comments/346416.html</wfw:comment><comments>http://www.blogjava.net/jelver/articles/346416.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jelver/comments/commentRss/346416.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jelver/services/trackbacks/346416.html</trackback:ping><description><![CDATA[<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">关于AES（16字节）加密解密算法的java实现<br />
根据指定的字符串来实现AES加密和解密，密匙可参数化配置，加密后数据的前两个字节是数据包的长度，加密算法选用AES</span><span style="color: #000000;">/</span><span style="color: #000000;">ECB&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">PKCS5Padding。即采用标准AES算法，把全报文按照每块16字节分块进行加解密，对于不足16字节的数据块按照PKCS5方式补充，缺少N&nbsp;个字节则把缺少的N个字节都以N来填充，最后一个数据块刚好16字节，则增加一个全部字节都填充为16的数据块。<br />
</span><span style="color: #000000;">=====================================</span><span style="color: #000000;"><br />
AesHandler.java<br />
</span><span style="color: #000000;">=====================================</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;java.io.File;<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;java.io.FileInputStream;<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;java.io.FileOutputStream;<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;java.io.IOException;<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;java.io.InputStream;<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;java.io.OutputStream;<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;java.io.UnsupportedEncodingException;<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;java.net.MalformedURLException;<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;java.net.URL;<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;java.security.GeneralSecurityException;<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;java.util.List;<br />
<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;javax.crypto.Cipher;<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;javax.crypto.ShortBufferException;<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;javax.crypto.spec.SecretKeySpec;<br />
<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;org.dom4j.Document;<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;org.dom4j.io.SAXReader;<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;org.dom4j.DocumentException;<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;org.dom4j.Element;<br />
<br />
</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;AesHandler&nbsp;{<br />
<br />
</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;String&nbsp;plainTextFile&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">src/encode.txt</span><span style="color: #000000;">"</span><span style="color: #000000;">;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;明文文件</span><span style="color: #008000;"><br />
</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;String&nbsp;cipherTextFile&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">src/aesDecode.txt</span><span style="color: #000000;">"</span><span style="color: #000000;">;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;密文文件</span><span style="color: #008000;"><br />
</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;String&nbsp;keyFile&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">src/aesKey.xml</span><span style="color: #000000;">"</span><span style="color: #000000;">;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;加密密匙文件</span><span style="color: #008000;"><br />
</span><span style="color: #000000;"><br />
</span><span style="color: #008000;">/**</span><span style="color: #008000;"><br />
*<br />
*&nbsp;</span><span style="color: #808080;">@param</span><span style="color: #008000;">&nbsp;keyName<br />
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;加密密匙名<br />
*&nbsp;</span><span style="color: #808080;">@return</span><span style="color: #008000;"><br />
</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;SecretKeySpec&nbsp;createKey(String&nbsp;keyName)&nbsp;{<br />
SAXReader&nbsp;reader&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;SAXReader();<br />
Document&nbsp;doc;<br />
SecretKeySpec&nbsp;skeySpec&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">;<br />
</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">[]&nbsp;raw;<br />
File&nbsp;keyXmlFile&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;File(keyFile);<br />
</span><span style="color: #0000ff;">try</span><span style="color: #000000;">&nbsp;{<br />
doc&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;reader.read(keyXmlFile);<br />
Element&nbsp;root&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;doc.getRootElement();<br />
List&nbsp;items&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;root.elements(</span><span style="color: #000000;">"</span><span style="color: #000000;">key16</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;items.size();&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br />
Element&nbsp;node&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(Element)items.get(i);<br />
</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(keyName.equalsIgnoreCase(node.attributeValue(</span><span style="color: #000000;">"</span><span style="color: #000000;">name</span><span style="color: #000000;">"</span><span style="color: #000000;">))){<br />
raw&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;node.attributeValue(</span><span style="color: #000000;">"</span><span style="color: #000000;">value</span><span style="color: #000000;">"</span><span style="color: #000000;">).getBytes(</span><span style="color: #000000;">"</span><span style="color: #000000;">ASCII</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
skeySpec&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;SecretKeySpec(raw,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">AES</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;skeySpec;<br />
}<br />
}<br />
}&nbsp;</span><span style="color: #0000ff;">catch</span><span style="color: #000000;">&nbsp;(DocumentException&nbsp;e)&nbsp;{<br />
e.printStackTrace();<br />
</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;throw&nbsp;new&nbsp;HiException(HiMessageCode.ERR_PARSE_FAILURE,&nbsp;_fmtFile,<br />
</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;e);</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">}&nbsp;</span><span style="color: #0000ff;">catch</span><span style="color: #000000;">&nbsp;(MalformedURLException&nbsp;e)&nbsp;{<br />
e.printStackTrace();<br />
}&nbsp;</span><span style="color: #0000ff;">catch</span><span style="color: #000000;">&nbsp;(UnsupportedEncodingException&nbsp;e)&nbsp;{<br />
e.printStackTrace();<br />
}<br />
</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;skeySpec;<br />
}<br />
<br />
</span><span style="color: #008000;">/**</span><span style="color: #008000;"><br />
*<br />
*&nbsp;</span><span style="color: #808080;">@param</span><span style="color: #008000;">&nbsp;code<br />
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;选择加密或解密操作码<br />
*&nbsp;</span><span style="color: #808080;">@param</span><span style="color: #008000;">&nbsp;keyFileStr<br />
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;加密密匙文件<br />
*&nbsp;</span><span style="color: #808080;">@param</span><span style="color: #008000;">&nbsp;plainFile&nbsp;明文文件<br />
*&nbsp;</span><span style="color: #808080;">@param</span><span style="color: #008000;">&nbsp;cipherFile&nbsp;密文文件<br />
*&nbsp;</span><span style="color: #808080;">@param</span><span style="color: #008000;">&nbsp;keyName&nbsp;密匙名&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;run(String&nbsp;code,&nbsp;String&nbsp;keyName)&nbsp;{<br />
</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;mode&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;Cipher.ENCRYPT_MODE;<br />
InputStream&nbsp;in&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">;<br />
OutputStream&nbsp;out&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">;<br />
</span><span style="color: #0000ff;">try</span><span style="color: #000000;">&nbsp;{<br />
SecretKeySpec&nbsp;skeySpec&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;createKey(keyName);<br />
Cipher&nbsp;cipher&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;Cipher.getInstance(</span><span style="color: #000000;">"</span><span style="color: #000000;">AES/ECB/PKCS5Padding</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(</span><span style="color: #000000;">"</span><span style="color: #000000;">DECODE</span><span style="color: #000000;">"</span><span style="color: #000000;">.equals(code))&nbsp;{<br />
mode&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;Cipher.DECRYPT_MODE;<br />
in&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;FileInputStream(cipherTextFile);<br />
out&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;FileOutputStream(plainTextFile);<br />
cipher.init(mode,&nbsp;skeySpec);<br />
decrypt(in,&nbsp;out,&nbsp;cipher);</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;解密</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">}&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;{<br />
in&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;FileInputStream(plainTextFile);<br />
out&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;FileOutputStream(cipherTextFile);<br />
cipher.init(mode,&nbsp;skeySpec);<br />
encrypt(in,&nbsp;out,&nbsp;cipher);</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;加密</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">}<br />
in.close();<br />
out.close();<br />
}&nbsp;</span><span style="color: #0000ff;">catch</span><span style="color: #000000;">&nbsp;(Exception&nbsp;e)&nbsp;{<br />
e.printStackTrace();<br />
}<br />
}<br />
<br />
</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">[]&nbsp;shortToByteArray(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;valor)&nbsp;{<br />
</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">[]&nbsp;result&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">[</span><span style="color: #000000;">2</span><span style="color: #000000;">];<br />
</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;result.length;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)&nbsp;{<br />
result[</span><span style="color: #000000;">1</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;i]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">)&nbsp;(valor&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0xFF</span><span style="color: #000000;">);<br />
valor&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;valor&nbsp;</span><span style="color: #000000;">&gt;&gt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">8</span><span style="color: #000000;">;<br />
}<br />
</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;result;<br />
}<br />
<br />
</span><span style="color: #008000;">/**</span><span style="color: #008000;"><br />
*&nbsp;加密算法<br />
*<br />
*&nbsp;</span><span style="color: #808080;">@param</span><span style="color: #008000;">&nbsp;in<br />
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;明文数据流<br />
*&nbsp;</span><span style="color: #808080;">@param</span><span style="color: #008000;">&nbsp;out<br />
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;密文数据流<br />
*&nbsp;</span><span style="color: #808080;">@param</span><span style="color: #008000;">&nbsp;cipher<br />
*&nbsp;</span><span style="color: #808080;">@throws</span><span style="color: #008000;">&nbsp;IOException<br />
*&nbsp;</span><span style="color: #808080;">@throws</span><span style="color: #008000;">&nbsp;ShortBufferException<br />
*&nbsp;</span><span style="color: #808080;">@throws</span><span style="color: #008000;">&nbsp;GeneralSecurityException<br />
</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;encrypt(InputStream&nbsp;in,&nbsp;OutputStream&nbsp;out,&nbsp;Cipher&nbsp;cipher)<br />
</span><span style="color: #0000ff;">throws</span><span style="color: #000000;">&nbsp;IOException,&nbsp;ShortBufferException,&nbsp;GeneralSecurityException&nbsp;{<br />
</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;blockSize&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;cipher.getBlockSize();<br />
</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;outputSize&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;cipher.getOutputSize(blockSize);<br />
</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">[]&nbsp;inBytes&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">[blockSize];<br />
</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">[]&nbsp;outBytes&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">[outputSize];<br />
</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">[]&nbsp;appendAllBytes&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">[blockSize];<br />
</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">[]&nbsp;appendBytes&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">[blockSize];<br />
</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;inLength&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br />
</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;length1&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;in.available();<br />
</span><span style="color: #0000ff;">boolean</span><span style="color: #000000;">&nbsp;more&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br />
</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;yushu&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;length1&nbsp;</span><span style="color: #000000;">%</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">16</span><span style="color: #000000;">;<br />
</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(yushu&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">)&nbsp;{<br />
</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">16</span><span style="color: #000000;">;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)&nbsp;{<br />
appendAllBytes[i]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Integer(</span><span style="color: #000000;">16</span><span style="color: #000000;">).byteValue();<br />
}<br />
out.write(shortToByteArray(length1&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;blockSize));<br />
}&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;{<br />
</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;N&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;blockSize&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;yushu;<br />
out.write(shortToByteArray(length1&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;N));<br />
}<br />
</span><span style="color: #0000ff;">while</span><span style="color: #000000;">&nbsp;(more)&nbsp;{<br />
inLength&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;in.read(inBytes);<br />
</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(inLength&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;blockSize)&nbsp;{<br />
</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;outLength&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;cipher.update(inBytes,&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;blockSize,&nbsp;outBytes);<br />
out.write(outBytes,&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;outLength);<br />
}&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br />
more&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br />
}<br />
</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(inLength&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;inLength&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;blockSize)&nbsp;{</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;不足16字节的数据块按照PKCS5方式补充，缺少N个字节则把缺少的N个字节都以N来填充</span><span style="color: #008000;"><br />
</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;N&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;blockSize&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;inLength;<br />
</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;M&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;inLength;&nbsp;M&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;blockSize;&nbsp;M</span><span style="color: #000000;">++</span><span style="color: #000000;">)&nbsp;{<br />
inBytes[M]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Integer(N).byteValue();<br />
}<br />
outBytes&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;cipher.doFinal(inBytes,&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;inLength);<br />
out.write(outBytes);<br />
}&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(inLength&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">)&nbsp;{</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;如果正好是16位，则增加一个全部字节都填充为16的数据块</span><span style="color: #008000;"><br />
</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;outLength&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;cipher.doFinal(appendBytes,&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;blockSize,&nbsp;outBytes);<br />
out.write(outBytes,&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;outLength);<br />
}<br />
out.flush();<br />
}<br />
<br />
</span><span style="color: #008000;">/**</span><span style="color: #008000;"><br />
*&nbsp;解密算法<br />
*<br />
*&nbsp;</span><span style="color: #808080;">@param</span><span style="color: #008000;">&nbsp;in<br />
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;密文数据流<br />
*&nbsp;</span><span style="color: #808080;">@param</span><span style="color: #008000;">&nbsp;out<br />
*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;明文数据流<br />
*&nbsp;</span><span style="color: #808080;">@param</span><span style="color: #008000;">&nbsp;cipher<br />
*&nbsp;</span><span style="color: #808080;">@throws</span><span style="color: #008000;">&nbsp;IOException<br />
*&nbsp;</span><span style="color: #808080;">@throws</span><span style="color: #008000;">&nbsp;ShortBufferException<br />
*&nbsp;</span><span style="color: #808080;">@throws</span><span style="color: #008000;">&nbsp;GeneralSecurityException<br />
</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;decrypt(InputStream&nbsp;in,&nbsp;OutputStream&nbsp;out,&nbsp;Cipher&nbsp;cipher)<br />
</span><span style="color: #0000ff;">throws</span><span style="color: #000000;">&nbsp;IOException,&nbsp;ShortBufferException,&nbsp;GeneralSecurityException&nbsp;{<br />
</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;blockSize&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;cipher.getBlockSize();<br />
</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;outputSize&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;cipher.getOutputSize(blockSize);<br />
</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">[]&nbsp;inBytes&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">[blockSize];<br />
</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">[]&nbsp;outBytes&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">[outputSize];<br />
</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">[]&nbsp;dataLength&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">[</span><span style="color: #000000;">2</span><span style="color: #000000;">];<br />
</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;inLength&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br />
</span><span style="color: #0000ff;">boolean</span><span style="color: #000000;">&nbsp;more&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br />
in.read(dataLength);</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;将数据包的长度读入到byte数组中</span><span style="color: #008000;"><br />
</span><span style="color: #0000ff;">while</span><span style="color: #000000;">&nbsp;(more)&nbsp;{<br />
inLength&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;in.read(inBytes);<br />
</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(inLength&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;blockSize)&nbsp;{<br />
</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;outLength&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;cipher.update(inBytes,&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;blockSize,&nbsp;outBytes);<br />
out.write(outBytes,&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;outLength);<br />
}&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br />
more&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br />
}<br />
</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(inLength&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">)&nbsp;{<br />
outBytes&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;cipher.doFinal(inBytes,&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;inLength);<br />
}&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;{<br />
outBytes&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;cipher.doFinal();<br />
}<br />
out.write(outBytes);<br />
out.flush();<br />
}<br />
<br />
</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;String&nbsp;getPlainTextFile()&nbsp;{<br />
</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;plainTextFile;<br />
}<br />
<br />
</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;setPlainTextFile(String&nbsp;plainTextFile)&nbsp;{<br />
</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.plainTextFile&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;plainTextFile;<br />
}<br />
<br />
</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;String&nbsp;getCipherTextFile()&nbsp;{<br />
</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;cipherTextFile;<br />
}<br />
<br />
</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;setCipherTextFile(String&nbsp;cipherTextFile)&nbsp;{<br />
</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.cipherTextFile&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;cipherTextFile;<br />
}<br />
</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;String&nbsp;getKeyFile()&nbsp;{<br />
</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;keyFile;<br />
}<br />
<br />
</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;setKeyFile(String&nbsp;keyFile)&nbsp;{<br />
</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.keyFile&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;keyFile;<br />
}<br />
}<br />
</span><span style="color: #000000;">=======================================================================</span><span style="color: #000000;"><br />
aesKey.xml文件<br />
</span><span style="color: #000000;">=============================</span><span style="color: #000000;"><br />
</span><span style="color: #000000;">&lt;?</span><span style="color: #000000;">xml&nbsp;version</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">1.0</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;encoding</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">GB2312</span><span style="color: #000000;">"</span><span style="color: #000000;">?&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">KEY</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">key16&nbsp;name</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">test</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;value</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">16BAESBocHK2Mcis</span><span style="color: #000000;">"</span><span style="color: #000000;">&gt;&lt;/</span><span style="color: #000000;">key16</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">KEY</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #000000;">=======================================================================</span><span style="color: #000000;"><br />
测试：<br />
加密密钥:&nbsp;16BAESBocHK2Mcis<br />
明文:&nbsp;ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#$</span><span style="color: #000000;">%!&amp;*</span><span style="color: #000000;">()_</span><span style="color: #000000;">+-=</span><span style="color: #000000;">:;</span><span style="color: #000000;">'</span><span style="color: #000000;">?,./</span><span style="color: #000000;"><br />
</span><span style="color: #000000;">密文为：&nbsp;&nbsp;<br />
</span><span style="color: #000000;">=========================</span><span style="color: #000000;">From&nbsp;</span><span style="color: #000000;">001</span><span style="color: #000000;">&nbsp;Lines&nbsp;to&nbsp;</span><span style="color: #000000;">016</span><span style="color: #000000;">============================</span><span style="color: #000000;"><br />
Debug:&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">--</span><span style="color: #000000;">2</span><span style="color: #000000;">--</span><span style="color: #000000;">3</span><span style="color: #000000;">--</span><span style="color: #000000;">4</span><span style="color: #000000;">--</span><span style="color: #000000;">5</span><span style="color: #000000;">--</span><span style="color: #000000;">6</span><span style="color: #000000;">--</span><span style="color: #000000;">7</span><span style="color: #000000;">--</span><span style="color: #000000;">8</span><span style="color: #000000;">--</span><span style="color: #000000;">9</span><span style="color: #000000;">-</span><span style="color: #000000;">HEX</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">--</span><span style="color: #000000;">2</span><span style="color: #000000;">--</span><span style="color: #000000;">3</span><span style="color: #000000;">--</span><span style="color: #000000;">4</span><span style="color: #000000;">--</span><span style="color: #000000;">5</span><span style="color: #000000;">--</span><span style="color: #000000;">6</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">---</span><span style="color: #000000;">ASCII&nbsp;Value</span><span style="color: #000000;">--</span><span style="color: #000000;"><br />
</span><span style="color: #000000;">00001</span><span style="color: #000000;">:&nbsp;</span><span style="color: #000000;">00</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">40</span><span style="color: #000000;">&nbsp;0e&nbsp;</span><span style="color: #000000;">49</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">32</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">64</span><span style="color: #000000;">&nbsp;f8&nbsp;</span><span style="color: #000000;">07</span><span style="color: #000000;">&nbsp;c0&nbsp;fd&nbsp;</span><span style="color: #000000;">22</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">80</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">49</span><span style="color: #000000;">&nbsp;6f&nbsp;</span><span style="color: #000000;">80</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">32</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;.@.I2d..例</span><span style="color: #000000;">"</span><span style="color: #000000;">.Io.2</span><span style="color: #000000;"><br />
</span><span style="color: #000000;">00002</span><span style="color: #000000;">:&nbsp;</span><span style="color: #000000;">50</span><span style="color: #000000;">&nbsp;c5&nbsp;</span><span style="color: #000000;">97</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">73</span><span style="color: #000000;">&nbsp;f4&nbsp;</span><span style="color: #000000;">55</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">83</span><span style="color: #000000;">&nbsp;fb&nbsp;</span><span style="color: #000000;">59</span><span style="color: #000000;">&nbsp;6d&nbsp;</span><span style="color: #000000;">85</span><span style="color: #000000;">&nbsp;3c&nbsp;</span><span style="color: #000000;">82</span><span style="color: #000000;">&nbsp;1c&nbsp;</span><span style="color: #000000;">30</span><span style="color: #000000;">&nbsp;a3&nbsp;&nbsp;&nbsp;P艞s.U凔Ym.</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">..</span><span style="color: #000000;">0</span><span style="color: #000000;">.<br />
</span><span style="color: #000000;">00003</span><span style="color: #000000;">:&nbsp;d8&nbsp;</span><span style="color: #000000;">49</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">45</span><span style="color: #000000;">&nbsp;fc&nbsp;e2&nbsp;</span><span style="color: #000000;">83</span><span style="color: #000000;">&nbsp;3d&nbsp;</span><span style="color: #000000;">39</span><span style="color: #000000;">&nbsp;a2&nbsp;d2&nbsp;6e&nbsp;</span><span style="color: #000000;">06</span><span style="color: #000000;">&nbsp;4f&nbsp;a6&nbsp;</span><span style="color: #000000;">94</span><span style="color: #000000;">&nbsp;1c&nbsp;&nbsp;&nbsp;.IE&nbsp;.</span><span style="color: #000000;">=</span><span style="color: #000000;">9</span><span style="color: #000000;">⒁n.O&nbsp;.<br />
</span><span style="color: #000000;">00004</span><span style="color: #000000;">:&nbsp;</span><span style="color: #000000;">19</span><span style="color: #000000;">&nbsp;2d&nbsp;</span><span style="color: #000000;">38</span><span style="color: #000000;">&nbsp;6d&nbsp;</span><span style="color: #000000;">81</span><span style="color: #000000;">&nbsp;e7&nbsp;</span><span style="color: #000000;">34</span><span style="color: #000000;">&nbsp;3b&nbsp;f7&nbsp;5d&nbsp;2b&nbsp;ff&nbsp;</span><span style="color: #000000;">83</span><span style="color: #000000;">&nbsp;a6&nbsp;</span><span style="color: #000000;">14</span><span style="color: #000000;">&nbsp;c2&nbsp;&nbsp;&nbsp;.</span><span style="color: #000000;">-</span><span style="color: #000000;">8m佺4;.]</span><span style="color: #000000;">+</span><span style="color: #000000;"></span><span style="color: #000000;">?</span><span style="color: #000000;">..<br />
</span><span style="color: #000000;">00005</span><span style="color: #000000;">:&nbsp;2d&nbsp;0e&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&gt;-</span><span style="color: #000000;">.<br />
</span><span style="color: #000000;">====================================</span><span style="color: #000000;">end</span><span style="color: #000000;">================================</span></div>
<img src ="http://www.blogjava.net/jelver/aggbug/346416.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jelver/" target="_blank">都市淘沙者</a> 2011-03-16 18:11 <a href="http://www.blogjava.net/jelver/articles/346416.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Rich Media Ad</title><link>http://www.blogjava.net/jelver/articles/340665.html</link><dc:creator>都市淘沙者</dc:creator><author>都市淘沙者</author><pubDate>Tue, 14 Dec 2010 08:33:00 GMT</pubDate><guid>http://www.blogjava.net/jelver/articles/340665.html</guid><wfw:comment>http://www.blogjava.net/jelver/comments/340665.html</wfw:comment><comments>http://www.blogjava.net/jelver/articles/340665.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jelver/comments/commentRss/340665.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jelver/services/trackbacks/340665.html</trackback:ping><description><![CDATA[<p>source : <a href="http://kevincao.com/2005/11/rich-media-ad/">http://kevincao.com/2005/11/rich-media-ad/</a></p>
<p>近日我们与<a href="http://www.eyeblaster.com/" title="http://www.eyeblaster.com/" rel="external">Eyeblaster</a>进行一个小型的交流会。<br />
Eyeblaster提供了一个富媒体广告的平台。基于这个平台，创意人员、开发人员可以更简单的做出各种类型的富媒体广告。Eyeblaster把富媒体广告分为了几大类：</p>
<ul>
    <li>Polite Banner，就是传统类型的网页广告。</li>
    <li>Full Page Overlay，一种覆盖在整个网页上的广告。</li>
    <li>Floating AD，浮动广告。</li>
    <li>Expandable Banner，同样固定在网页上的某个位置，不过位置可以扩展，这就比传统类型的广告更有意思些。</li>
    <li>Commercial Break，页面切换的时候，先播放一段广告再切换，就是这一类型。</li>
    <li>Wallpaper AD，把广告做为网页的背景，与页面上的广告相互呼应。</li>
    <li>Window AD，弹出窗口式广告。</li>
    <li>Video Clip，视频广告。这类广告通常很大，文件通常不是直接放在网站的服务器上，而是由Eyeblaster提供专门的广告服务器来承担这部分流量。</li>
    <li>Video Strip，同样是视频的，加入了些交互的元素。</li>
    <li>Push Down Banner，广告位会被撑大，从而网页内容会被&#8220;Push Down&#8221;的一种广告类型。</li>
</ul>
<p><br />
根据这些分类，Eyeblaster提供了对应的命令包，制作人员在制作Flash的时候就可以通过调用这些命令来快速达到对应的效果。思路其实是很简单
的，技术实现其实也不复杂。另外通过把广告流量分离出来，成功的解决了投放媒体广告的文件量限制。使得很多更具创意的想法能够得以实现，视频、
minisite banner等等在国外已经有很多案例了。<br />
Eyeblaster还与各大媒体，门户等等建立了合作关系，使得他们的富媒体广告能够被支持，这才是他们的优势。他们自己制定了富媒体广告的标准，并让
媒体和广告制作商都去支持他们的标准，这才是最重要的。当然，修炼自身的功夫也是保持常胜常新的根本。在现有的富媒体广告的分类下，他们还在探索新的广告
形式。同时广告发布的平台也要被不断的完善起来。<br />
国内的富媒体广告才刚刚起步。几大媒体门户：新浪、163、搜狐等对此的限制还比较死。众多网络人对此的认知更是为零。Eyeblaster正着力开拓这块新兴的市场。我们呢？</p>
<img src ="http://www.blogjava.net/jelver/aggbug/340665.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jelver/" target="_blank">都市淘沙者</a> 2010-12-14 16:33 <a href="http://www.blogjava.net/jelver/articles/340665.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>经典古文名句</title><link>http://www.blogjava.net/jelver/articles/93148.html</link><dc:creator>都市淘沙者</dc:creator><author>都市淘沙者</author><pubDate>Thu, 11 Jan 2007 06:14:00 GMT</pubDate><guid>http://www.blogjava.net/jelver/articles/93148.html</guid><wfw:comment>http://www.blogjava.net/jelver/comments/93148.html</wfw:comment><comments>http://www.blogjava.net/jelver/articles/93148.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jelver/comments/commentRss/93148.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jelver/services/trackbacks/93148.html</trackback:ping><description><![CDATA[1．如切如磋，如琢如磨。（《诗经·卫风·湛奥》）<br />2．言者无罪，闻者足戒。（《诗经·大序》）<br />3．它山之石，可以攻玉。（《诗经·小雅·鹤鸣》）<br />4．投我以桃，报之以李。（《诗经·大雅·抑》）<br />5．靡不有初，鲜克有终。（《诗经·大雅·荡》）<br />6．长太息以掩涕兮，哀民生之多艰。（屈原（离骚》）<br />7．路漫漫其修远兮，吾将上下而求索。（屈原（离骚》）<br />8．吾不能变心以从俗兮，团将愁苦而终穷。（屈原《涉江》）<br />9．尺有所短，寸有所长。（《楚辞·卜居》）<br />10．亦余心之所善兮，虽九死其犹未悔。（楚辞（离骚》）<br />11．其曲弥高，其和弥寡。（宋玉（对楚王问》）<br />12．满招损，谦受益。（《尚书》）<br />13．欲加之罪，何患无辞。（《左传·僖公十年》）<br />14．人非圣贤，孰能无过？过而能改，善莫大焉。（《左传》）<br />15．辅车相依，唇亡齿寒。（《左传·僖公五年》）<br />16．武夫力而拘诸原，妇人暂而免诸国。（《左传·僖公三十二年至三十三年》）<br />17．前事不忘，后事之师。（《战国策·赵策））<br />18．亡羊补牢，犹未迟也。（《战国策·楚策》）<br />19．知己知彼，百战不殆。（《孙子兵法·谋攻》）<br />20．千里之行，始于足下。（《老子·六十四章））<br />21．祸兮福之所倚，福兮祸之所伏。（《老子·五十八章））<br />22．天网恢恢，疏而不漏。（《老子·七十三章））<br />23．知人者智，自知者明。（《老子））<br />24．物以类聚，人以群分。（《易经））<br />25．工欲善其事，必先利其器。（《论语·卫灵公》）<br />26．往者不可谏，来者犹可追。（《论语·微子））<br />27．己所不欲，勿施于人。（《论语·颜渊》）<br />28．三军可夺帅也，匹夫不可夺志也。（《论语·子罕》）<br />29．学而不思则罔，思而不学则殆。（《论语·为政》）<br />30．学而不厌，诲人不倦。（《论语·述两》）<br />31．君子坦荡荡，小人常戚戚。（《论语·述而》）<br />32．人无远虑，必有近忧。（《论语·卫灵公））<br />33．言必信，行必果。（《论语·子路））<br />34．与朋友交，言而有信。（《论语·学而））<br />35．有则改之，无则加勉。（《论语》）<br />36．是可忍，孰不可忍。（《论语·八佾））<br />37．敏而好学，不耻下问。（《论语·公冶长））<br />38．吾生也有涯，而知也无涯。（《庄子·养生主））<br />39．十年树木，百年树人。（《管子·权修》）<br />4O．橘生淮南则为橘，生于谁北则为枳。（《晏子春秋》）<br /><br />41．达则兼济天下，穷则独善其身。（《孟子·尽心上））<br />42．老吾老，以及人之老；幼吾幼，以及人之幼。（《孟子·梁惠王下））<br />43．天时不如地利，地利不如人和。（《孟子·公孙丑））<br />44．民为贵，社稷次之，君为轻。（《孟子·尽心上））<br />45．得道者多助，失道者寡助。（《孟子·公孙丑））<br />46．生于优患，死于安乐。（《孟子·告于下》）<br />47．富贵不能淫，贫贱不能移，威武不能屈。（《孟子·滕文公下》）<br />48．尽信书，不如无书。（《孟子·尽心下》）<br />49．生，亦我所欲也；义，亦我所欲也；二者不可得兼，舍生而取义者也。（《孟子·鱼我所欲也》）<br />50．锲而舍之，朽木不折；锲而不舍，金石可镂。（《苟子·劝学））<br />5l．蓬生麻中，不扶而直；白沙在提，与之俱黑。（《苟子·劝学》）<br />52．千里之堤，溃于蚁穴。（《韩非子·喻老》）<br />53．流水不腐，户枢不蠹，动也。（《吕氏春秋·尽数））<br />54．独学而无友，则孤陋而寡闻。（《礼记·杂记））<br />55．一张一弛，文武之道。（《礼记·杂记下》）<br />56．玉不琢，不成器；人不学，不知道。（《礼记·学记》）<br />57．凡事预则立，不预则废。（《礼记·中庸》）<br />58．临渊羡鱼，不如退而结网。（《汉书·董仲舒传》）<br />59．塞翁失马，焉知非福。（《淮南子·人间训》）<br />60．失之毫厘，谬以千里。（《史记·太史公自序》）<br />61．桃李不言，下自成蹊。（《史记·李将军列传》）<br />62．智者千虑，必有一失；愚者千虑，必有一得。（《史记淮阴侯列传》）<br />63．良药苦口利于病，忠言逆耳利于行。（《史记》）<br />64．项庄舞剑，意在沛公。（《史记·项羽本记》）<br />65．大行不顾细谨，大礼不辞小让。（《史记·项羽本记》）<br />66．人为刀俎，我为鱼肉。（《史记·项羽本记》）<br />67．不鸣则已，一鸣惊人。（《史记·滑稽列传》）<br />68．文王拘而演《周易》；仲尼厄而作《春秋》；屈原放逐，乃赋（离骚》；左丘失明，厥有《国语》；孙子膑脚，兵法修列；不韦迁蜀，世传《吕览》；韩非国秦，《说难》《孤愤》；《诗》三百篇，大抵贤圣发愤之所为作也。（司马迁《报任安书》）<br />69．绳锯木断，水滴石穿。（班固《汉书》）<br />70．水至清则无鱼，人至家则无徒。（班固《汉书·东方朔传》）<br />71．少壮不努力，老大徒伤悲！（汉乐府《长歌行》）<br />72．行百里者，半于九十。（汉（逸诗句风雅逸篇四》）<br />73．失之东隅，收之桑榆。（范晔（后汉书·冯异传））<br />74．精诚所至，金石为开。（范晔（后汉书·广陵思王荆传》）<br />75．盛名之下，其实难副。（南朝宋·范晔（后汉书·黄琼传））<br />76．不人虎穴，焉得虎子。（范晔《后汉书·班超传））<br />77．疾风知劲草，岁寒见后凋 。（范晔《后汉书》）<br />78．老骥伏枥 志在千里：烈士暮年，壮心小已。（曹操《龟虽寿》）<br />79．鞠躬尽瘁，死而后已。（诸葛亮《后出师表》）<br />80．非淡泊无以明志，非宁静无以致远。（诸葛亮《诫子书》）<br />81．勿以恶小而为之，勿以善小而不为。（西晋·陈寿《三国志））<br />82．士别三日，即当刮目相待。（陈寿（三国志·吴书））<br />83 好读书，不求甚解。每有会意，便欣然忘食。（东晋·陶渊明《五柳先生传》）<br />84．奇文共欣赏，疑义相与析。（陶渊明《移居》）<br />85．山气日夕佳，飞鸟相与还。（陶渊明《饮酒》）<br />86．木欣欣以向荣，泉涓涓而始流。（晋·陶渊明《归去来兮辞》）<br />87．盛年不重来，一日难再晨。（陶渊明《杂诗》）<br />88．及时当勉励，岁月不待人。（陶渊明《杂诗》）<br />89．宁为玉碎，不为瓦全。（《北齐书》）<br />90．若要人不知，除非己莫为。（枚乘《上书谏吴王》）<br />91．近朱者赤，近墨者黑。（晋·傅玄〈太子不少傅箴》）<br />92．机不可失，失不再来。（《新五代史·晋书》）<br />93．登山则情满于山，观海则意溢于海。（南朝梁·刘勰《文心雕龙》）<br />94．蝉噪林逾静，鸟鸣山更幽。（南朝梁·王籍〈入若耶溪》）<br />95．海内存知己，天涯若比邻。（唐·王勃〈送杜少府之任蜀州》）<br />96．落霞与孤鹜齐飞，秋水共长天一色。（唐·王勃《膝王阁序〉）<br />97．海上生明月，天涯共此时。（唐·张九龄（望月怀远》）<br />98．人世有代谢，往来成古今。（唐·孟浩然《与诸子登岘山》）<br />99．绿树村边合，青山郭外斜。（唐·孟浩然《过故人庄》）<br />100．大漠孤烟直，长河落日圆。（唐。王维《使至塞上》）<br />101．独在异乡为异客，每逢佳节倍思亲。（唐·王维〈九月九日忆山东兄弟》）<br />102．劝君更进一杯酒，西出阳关无故人。（唐·王维〈送元二使安西》）<br />103．白日依山尽，黄河人海流。欲穷千里目，更上一层楼。（唐·王之涣《登鹳雀楼》）<br />104．莫愁前路无知己，天下谁人不识君。（唐·高适（别董大））<br />105．忽如一夜春风来，千树万树梨花开。（唐·岑参〈白雪歌送武判官归京》）<br />l06．马上相逢无纸笔，凭君传语报平安。（唐·岑参〈逢人京使〉）<br />l07．近乡情更怯，不敢问来人。（唐·李频《渡汉江））<br />108．两岸猿声啼不住，轻舟已过万重山。（唐·李白《早发白帝城〉）<br />l09．举头望明月，低头思故乡。（唐李白《静夜思》）<br />110．清水出芙蓉，天然去雕饰。（唐·李白《论诗〉）<br />1ll．天生我材必有用，千金散尽还复来。（唐·李白《将进酒〉）<br />112．安能摧眉折腰事权贵，使我不得开心颜（唐李白《梦游天姥吟留别》）<br />113．孤帆远影碧空尽，惟见长江天际流。（唐李白《送孟浩然之广陵〉）<br />114．长风破浪会有时，直挂云帆济沧海。（唐李白《行路难））<br />115．朱门酒肉臭，路有冻死骨。（唐杜甫《自京赴奉先县咏怀五百字》）<br />116．酒债寻常行处有，人生七十古来稀。（唐·杜甫《曲江》）<br />117．无边落木萧萧下，不尽长江滚滚来。（唐·杜甫《登高》）<br />118．读书破万卷，下笔如有神。（唐杜甫（奉赠韦左丞二十二韵》）<br />119．为人性僻耽佳句，语不惊人死不休。（唐·杜甫《江上值水如海势聊短述》）<br />120．露从今夜白，月是故乡明。（唐·杜甫《月夜忆弟舍》）<br />121．出师未捷身先死，长使英雄泪满襟。（唐·杜甫〈蜀相》）<br />122．笔落惊风雨，诗成泣鬼神。（唐·杜甫（寄李十二白二十》）<br />123．文章千古事，得失寸心知。（唐·杜甫〈偶题》）<br />124．正是江南好风景，落花时节又逢君。（唐·杜甫（江南逢李龟年））<br />125．安得广厦千万间，大庇天下寒士俱欢颜，风雨不动安如山？呜呼！何时<br />眼前突兀见此屋，吾庐独破受冻死亦足。（唐·杜甫《茅屋为秋凤所破歌》）<br />126．二句三年得，一吟双泪流。（唐·贾岛《题诗后〉）<br />127．谁言寸草心，报得三春晖。（唐·孟郊《游子吟））<br />128．蚍蜉撼大树，可笑不自量。（唐·韩愈《调张籍》）<br />129．不塞不流，不止不行。（唐·韩愈《原道》）<br />130．业精于勤荒于嬉，行成于思毁于随。（唐·韩愈〈进学解〉）<br />131．李杜文章在，光焰万丈长。（唐·韩愈《调张籍》）<br />132．我有迷魂招不得，雄鸡一叫天下白。（唐·李贺《致酒行》）<br />133．衰兰送客咸阳道，天若有情天亦老。（唐·李贺《金铜仙人辞汉歌〉）<br />134．不见年年辽海上，文章何处哭秋风。（唐·李贺《南园》）<br />135．沉舟侧畔千帆过，病树前头万木春。（唐·刘禹赐《酬乐天扬州初逢席上见赠》<br />136．东边日出西边雨，道是无晴却有晴。（唐·刘禹锡《竹枝词》）<br />137．山不在高，有仙则名；水不在深，有龙则灵。（唐刘禹锡〈陋室铭〉）<br />138．千淘万漉虽辛苦，吹尽狂沙始到金。（唐·刘禹锡《浪淘沙》）<br />139．请君莫奏前朝曲，听曲新翻杨柳枝。（唐·刘禹锡《杨柳枝词九首》）<br />140．文章合为时而著，歌诗合为事而作。（唐·白居易《与元九书》）<br />141．野火烧不尽，春风吹又生。（唐·白居易《赋得古原草送别》）<br />142．同是天涯沦落人，相适何必曾相识。（唐·白居易《琵琶行》）<br />143．试玉要烧三日满，辨材须待七年期。（唐·白居易《放言》）<br />144．乱花渐欲迷人眼，浅草才能没马蹄。（唐·白居易《钱塘湖春行》）<br />145．醉卧沙场君莫笑，古来征战几人回！（唐·王翰凉州词》）<br />146．千里莺啼绿映红，水村山郭酒旗风。（唐·杜牧〈江南村绝句》）<br />147．烟笼寒水月笼沙，夜泊秦淮近酒家。（唐·杜牧《泊秦淮》）<br />148．春蚕到死丝方尽，蜡炬成灰泪始于。（唐·李商隐《无题》）<br />149．身无彩凤双飞翼，心有灵犀一点通。（唐·李商隐（无题》）<br />150．相见时难别亦难，东风无力百花残。（唐·李商隐《无题》）<br />151．夕阳无限好，只是近黄昏。（唐·李商隐《乐游原〉）<br />152．天意伶幽草，人间重晚情。（唐·李商隐〈晚情〉）<br />153．风暧鸟声碎，日高花影重。（唐·杜荀鹤《春宫怨》）<br />154．曾经沧海难为水，除却巫山不是云。（唐·元稹〈离思》）<br />155．姑苏城外寒山寺，夜半钟声到客船。（唐·张继〈枫桥夜泊》）<br />156．吟安一个字，捻断数茎须。（唐·卢延让〈苦吟〉）<br />157．苦恨年年压金线，为他人作嫁衣裳。（唐·秦韬玉〈贫女》）<br />158．海阔凭鱼跃，天高任鸟飞。（僧云览诗中之句）<br />159．溪云初起日沉阁，山雨欲来风满楼。（唐·许浑咸阳城东楼〉）<br />160．罄南山之竹，书罪无穷；决东海之波，流恶难尽。（唐祖君彦《为李密檄洛州文》）<br />161．云山苍苍，江水泱泱，先生之风，山高水长。（宋·范仲淹〈严先生祠堂记》）<br />162．先天下之忧而忧，后天下之乐而乐。（宋·范仲淹《岳阳楼记》）<br />163．醉翁之意不在酒，在乎山水之间也。（宋·欧阳修〈醉翁亭记〉）<br />164．雪消门外青山绿，花发江边二月晴。（宋·欧阳修《春日西湖记谢法曹歌〉） <br />165．忧劳可以兴国，逸豫可以亡身。（宋·欧阳修〈伶官传序〉）<br />l66，衣带渐宽终不悔，为伊消得人憔悴。（宋·柳永〈凤栖梧〉）<br />167．兼听则明，偏信则暗。（宋·司马光《资治通鉴》）<br />168．由俭入奢易，由奢入俭难。（宋·司马光〈训俭示康〉）<br />169．春风又绿江南岸，明月何时照我还。（宋·王安石〈泊船瓜州〉）<br />17o．不畏浮云遮望眼，只缘身在最高层。（宋·王安石《登飞来峰》）<br />171．欲把西湖比西子，淡妆浓抹总相宜。（宋·苏轼《饮湖上初晴后雨》）<br />172．山高月小，水落石出。（宋·苏试《后赤壁赋》）<br />173．但愿人长久，千里共蝉娟。（宋·苏试《水调歌头》）<br />174．人有悲欢离合，月有阴晴圆缺。宋·苏轼《水调歌头》）<br />175·横看成岭侧成峰，远近高低各不同。不识庐山真面目，只缘身在此山中。（宋·苏轼《题西林壁》）<br />176．竹外桃花三两枝，春江水暖鸭先知。（宋·苏轼〈惠崇〈春江晚景》）<br />177．嬉笑怒骂，皆成文章。（宋·黄庭坚〈东坡先生真赞〉）<br />178．生当作人杰，死亦为鬼雄。（宋·李清照《夏日绝句〉）<br />179．山重水复疑无路，柳暗花明又一村。（宋·陆游〈游山西村〉）<br />180．夜阑卧听风吹雨，铁马冰河人梦来。（宋·陆游十一月四日风雨大作》）<br />181．纸上得来终觉浅，绝知此事要躬行。（宋·陆游〈冬夜读书示子聿》）<br />182．王师北定中原日，家祭无忘告乃翁。（宋陆游〈示儿〉）<br />183．文章本天成，妙手偶得之。（宋·陆游〈文章〉）<br />184．出师一表真名世，千载谁堪伯仲间。（宋·陆游《书愤》）<br />185．小荷才露尖尖角，早有蜻蜓立上头。（宋·杨万里〈小池〉）<br />186．接天莲叶无穷碧，映日荷花别样红。（宋·杨万里《晓出净慈寺送林子方》）<br />187．青山遮不住，毕竟东流去。（宋·辛弃疾〈菩萨蛮》）<br />188．千古兴亡多少事，悠悠，不尽长江滚滚流。（宋·辛弃疾〈南乡子》）<br />189．念桥边红药，年年知为谁生！（宋·姜夔《扬州慢））<br />190．人生自古谁无死留取丹心照汗青。（宋·文天祥《过零丁洋》）<br />191．春色满园关不住，一枝红杏出墙来。（宋·叶绍翁〈游园不值》）<br />192．即以其人之道，还治其人之身。（宋·朱熹《中庸·十三章注》）<br />193．等闲识得东风面，万紫千红总是春。（宋·朱熹《春日》）<br />194．问渠哪得清如许，为有源头活水来。（宋·朱熹《观书有感））<br />195．绿杨烟外晓寒轻，红杏枝头春意闹。（宋·宋祁《玉楼春》）<br />196．近水楼台先得月，向阳花木易为春。（宋·俞文豹《清夜录》）<br />197．梅须逊雪三分白，雪却输梅一段香。（宋·梅尧臣《雪梅》）<br />198．莫等闲，白了少年头，空悲切。（宋·岳飞《满江红》）<br />199．三十功名尘与土八千里路云和月。（宋岳飞《满江红》）<br />200．暖风熏得游人醉，直把杭州作汴州。（宋·洪林《西湖》）<br />201．地也，你不分好歹何为地！天也，你错勘贤愚枉做天！（元·关汉卿《窦娥冤》）<br />202．着意栽花花不发，等闲插柳柳成阴。（元·关汉卿《包待制智斩鲁斋郎》）<br />203．只要功夫深，铁杵磨成针。（元·虞韶《日记故事》）<br />204．男儿有泪不轻弹，只因未到伤心处。（元·李开先《宝剑记》）<br />205．花落水流红，用愁万种，无语怨东风。（元·王实甫〈西厢记〉）<br />206．路遥知马力，日久见人心。（元·无名氏《争报恩》）<br />207．不是一番寒彻骨，怎得梅花扑鼻香。（元·高明《琵琶记》）<br />208．从来好事天生俭，自古瓜儿苦后甜。（元·白朴《喜来春》）<br />209．不要人夸好颜色，只留清气满乾坤。（元·王冕《题墨梅》）<br />210．一言既出，驷马难追。（元·李寿卿〈伍员吹萧〉）<br />211．养军千日，用军一时。（元·马致远（汉宫秋第二折））<br />212．良辰美景奈何天，赏心乐事谁家院。（明·汤显祖〈牡丹亭》）<br />213．金玉其外，败絮其中。（明·刘基《卖柑者言》）<br />214．墙上芦苇，头重脚轻根底浅；山间竹笋，嘴尖皮厚腹中空。（明·解缙对联）<br />215．风声，雨声，读书声，声声入耳；家事，国事，天下事，事事关心。（明·顾宪成·东林书院门前对联）<br />216．将在谋而不在勇，兵在精而不在多。（明·冯梦龙（古今小说》）<br />217．人逢喜事精神爽，月到中秋分外明。（明·冯梦龙（古今小说》）<br />218．冤家宜解不宜结，各自回头看后头。（明·冯梦龙《古今小说》）<br />219．踏破铁鞋无觅处，得来全不费工夫。（明·冯梦龙《警世通言》）<br />220．命里有时终须有，命里无时莫强求。（明·兰陵笑笑生《金瓶梅》）<br />221．各人自扫门前雪，休管他人瓦上霜。（《事林广记》）<br />222．长江后浪推前浪，一代新人换旧人。（《增广昔时贤文》）<br />223．情随境变，字逐情生。（明·袁宏道《叙小修诗》）<br />224．粉身碎骨浑不怕，要留清白在人间。（明·于谦《石灰吟》）<br />225．一年三百六十日，都是横戈马上行。（明·戚继光（马上作））<br />226．尝将冷眼观螃蟹，看你横行得几时？（明代民歌（京师人为严嵩语））<br />227．滚滚长江东逝水，浪花淘尽英雄。是非成败转头空，青山依旧在，几度夕阳红。（罗贯中《三国演义·卷首词》）<br />228．破屋更遭连夜雨，漏船又遇打头风。（施耐庵《水浒传》）<br />229．画龙画虎难画骨，知人知面不知心。（施耐庵《水浒传》）<br />230．有缘千里来相会，无缘对面不相逢。（施耐庵《水浒传》）<br />231．山高自有客行路，水深自有渡船人。（吴承恩（西游记））<br />232．一叶浮萍归大海，人生何处不相逢。（吴承恩（西游记））<br />233．道高一尺，魔高一丈。（吴承恩（西游记））<br />234．智者不必仁，而仁者则必智。（蒲松龄《聊斋志异》）<br />235．千磨万击还坚劲，任尔东西南北风。（清·郑板桥《竹石》）<br />236．隔靴搔痒赞何益，人木三分骂亦精。（清郑板桥对联）<br />237．世事洞明皆学问，人情练达即文章。（曹雪芹《红楼梦》）<br />238．假作真时真亦假，无为有处有还无。（曹雪芹（红楼梦））<br />239．天下兴亡，匹夫有责。（清顾炎武《日知录》）<br />240．品画先神韵，论诗重性情。（清·袁枚（品画））<br />241．落红不是无情物，化作春泥更护花。（清龚自珍（己亥杂诗））<br />242．我劝天公重抖擞，不拘一格降人才。（清龚自珍《己亥杂诗》》<br />243．我自横刀向天笑，去留肝胆两昆仑。（清谭嗣同《狱中题壁》<br />244．一腔热血勤珍重，洒去犹能化碧涛。（清·秋瑾（对酒））<br />245．拼得十万头颅血，须把乾坤力转回。（清·秋瑾（黄海舟日人索句并见日俄战争地图））<br />246．江山代有才人出，各领风骚数百年。（清·赵翼（论诗））<br />247．一失足成千古恨，再回头已百年身。（清魏子安（花月痕））<br />248．鲁迅名句：<br />寄意寒星荃不察，我以我血荐轩辕。（《自题小像》<br />横眉冷对千夫指，俯首甘为孺子牛。（《自嘲》）<br />心事浩渺连广宇，于无声处听惊雷。（《无题》）<br />249．毛泽东诗词名句：<br />红军不伯远征难，万水千山只等闲。（《七律·长征》）<br />中华儿女多奇志，不爱红妆爱武装。（《为女民兵题照》）<br />天若有情天亦老，人间正道是沧桑。（《七律·人民解放军占领南京》）<br />为有牺牲多壮志，敢教日月换新天。（《七律·到韶山》）。<br />一万年太久，只争朝夕。（《满江红·和郭沫若同志》）<br />牢骚太盛防肠断，风物长宜放眼量。（《七律·和柳亚子先生》）<br />红雨随心翻作浪，青山着意化为桥。（《七律·送瘟神》）<br /><img src ="http://www.blogjava.net/jelver/aggbug/93148.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jelver/" target="_blank">都市淘沙者</a> 2007-01-11 14:14 <a href="http://www.blogjava.net/jelver/articles/93148.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>电子商务使用数据加密来保护数据库 （二）</title><link>http://www.blogjava.net/jelver/articles/88145.html</link><dc:creator>都市淘沙者</dc:creator><author>都市淘沙者</author><pubDate>Sat, 16 Dec 2006 04:07:00 GMT</pubDate><guid>http://www.blogjava.net/jelver/articles/88145.html</guid><wfw:comment>http://www.blogjava.net/jelver/comments/88145.html</wfw:comment><comments>http://www.blogjava.net/jelver/articles/88145.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jelver/comments/commentRss/88145.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jelver/services/trackbacks/88145.html</trackback:ping><description><![CDATA[
		<font color="#333333">
				<font face="宋体">
						<strong>电子商务使用数据加密来保护数据库 （二）<br /></strong>上篇讲解了一些理论上的内容，这次我们详细介绍一下例子：<br /><br />例如，我们创建一个类DESUtil.java<br /><br />按照上次讲的，我要首先要创建一个密钥，所以先增加一个方法，用来创建DES密钥。为了使用方便，我们暂时把所有的方法写成静态方法。<br />//filename是要保存的文件路径<br />public static void createKey(String filename) throws Exception{<br />//生成一个可信任的随机数源<br />SecureRandom sr = new SecureRandom();<br />//为我们选择的DES算法生成一个KeyGenerator对象<br />KeyGenerator kg = KeyGenerator.getInstance("DES");<br />kg.init(sr);<br />//生成密钥<br />Key key = kg.generateKey();<br />//将密钥数据保存为文件供以后使用<br />writeFile(key,filename); //稍候讲解<br />}<br /><br />好了，我们可以通过上面的方法生成密钥了。<br />因为我们可能会在不同的地方调用加密或者解密的方法，所以我们必须把生成密钥的存储在一个文件中，推荐存储到应用的/WEB-INF/的某个目录下，因为那个目录只由自己的程序调用，不能通过URL访问，所以更安全。接下来我们要写两个方法，一个将密钥存储到文件，另一个则是在加密或者解密的方法中读出密钥进行加密或者解密。<br /><br />//filename是密钥存储的路径，msg是我们用第一个方法生成的密钥<br />public static void writeFile(Key msg, String filePath) {<br />try {<br />File file = new File(filePath);<br />if (file.exists()) {<br />file.delete();<br />}<br />FileOutputStream wf = new FileOutputStream(file);<br />ObjectOutputStream out = new ObjectOutputStream(wf);<br />out.writeObject(msg);<br />out.close();<br />file = null;<br />wf = null;<br />} catch (IOException e) {<br />debug(e.getMessage());<br />}<br />}<br />//filename是密钥存储的路径<br />public static Key readFile(String filePath) {<br />Key key = null;<br />try {<br />File f = new File(filePath);<br />if (f.exists()) {<br />FileInputStream bw = new FileInputStream(f);<br />ObjectInputStream in = new ObjectInputStream(bw);<br />key = (Key)in.readObject();<br />in.close();<br />bw = null;<br />}<br />f = null;<br />} catch (Exception e) {<br />debug(e.getMessage());<br />}<br />return key;<br />}<br /><br />这里我们直接把密钥对象整个存到了文件中，当然也可以用字节的方式存储，但是中间可以会有些小麻烦噢!<br /><br />好了，现在密钥的问题也解决了，我们接下来的工作就是写加密和解决的方法了。<br /><br />//str 要加密的字节数组<br />public static byte[] DataEncrypt(byte[] str,String filename) throws Exception{<br />//<br />SecretKey key = (SecretKey)readFile(filename);<br />//Cipher对象实际完成加密操作<br />Cipher cipher = Cipher.getInstance("DES");<br />//用密钥初始化Cipher对象<br />cipher.init(Cipher.ENCRYPT_MODE, key);<br />//执行加密操作<br />byte[] encryptedData = cipher.doFinal(str);<br />//<br />return encryptedData;<br />}<br />//str 要解密的字节数组<br />public static byte[] DataDecrypt(byte[] str,String filename) throws Exception{<br />//<br />SecretKey key = (SecretKey)readFile(filename);<br />//Cipher对象实际完成加密操作<br />Cipher cipher = Cipher.getInstance("DES");<br />//用密钥初始化Cipher对象<br />cipher.init(Cipher.DECRYPT_MODE, key);<br />//执行加密操作<br />byte[] encryptedData = cipher.doFinal(str);<br />//<br />return encryptedData;<br />}<br /><br /><br />简单吧，我们已经成功的创建了DES加密，解密的类了。测试一下吧！<br /><br />public static void main(String[] args) {<br />String filename = "c:/des.key";<br />String str = "0109103746028";<br />System.out.print("source="+str);<br />try { <br />DESUtil.createKey(filename);<br />//<br />byte[] enstr = DESUtil.DataEncrypt(str.getBytes(),filename);<br />str = new String(enstr);//加密后的字串<br />System.out.print("encrypt=" + str);<br />//<br />byte[] destr = DESUtil.DataDecrypt(str.getBytes(),filename);<br />str = new String(destr);//解密后的字串<br />System.out.print("decrypt=" + str);<br />} catch (Exception e) {<br />e.printStackTrace();<br />}<br />debug("ok");<br />}<br /><br />如果没有定错的话，一定报错了： javax.crypto.BadPaddingException: Given final block not properly padded<br />怎么回事，都是按照你的写的，怎么会不对呢？仔细分析一下，不难发现，该异常是在解密的时候抛出的，加密的方法没有问题。<br /><br />但是两个方法的唯一差别是Cipher对象的模式不一样，这就排除了程序写错的可能性。再看一下异常的揭示信息，大概的意思是：提供的字块不符合填补的。什么意思？？？原来在用DES加密的时候，最后一位长度不足64的，它会自动填补到64，那么在我们进行字节数组到字串的转化过程中，可以把它填补的不可见字符改变了，所以引发系统抛出异常。问题找到，怎么解决呢？大家还记得邮件传输通常会把一些信息编码保存，对了，就是Base64，那样保证了信息的完整性，所以我们就是利用一下下了。为了方便使用，我们再写一个新的方法封装一下原来的方法：<br />//<br />public static String DataEncrypt(String str){<br />String encrypt = null;<br />try{<br />byte[] ret = DataEncrypt(str.getBytes("UTF-8"),filename);<br />encrypt = new String(Base64.encode(ret),"UTF-8");<br />}catch(Exception e){<br />System.out.print(e);<br />encrypt = str;<br />}<br />return encrypt;<br />}<br />//<br />public static String DataDecrypt(String str){<br />String decrypt = null;<br />try{<br />byte[] ret =  DataDecrypt(Base64.decode(str.getBytes("UTF-8")),filename);<br />decrypt =  new String(ret,"UTF-8");<br />}catch(Exception e){<br />System.out.print(e);<br />decrypt = str;<br />}<br />return decrypt;<br />}<br /><br />我们把方法的参数改成了字串，但是为什么要用UTF-8呢？不指定它的字节格式不行吗？大家知道，UTF-8是国际通用的字符编码，用它传输任何字串都不会有问题，通过它也可以很完美的解决J2EE的中文问题！所以我们最好用UTF-8编码，以减少不必要的麻烦。<br /><br />注意，上面方法中当加密或者解密过程中，程序抛出异常，将返回原值，使得在调用方法失败时更方便的找出错误。<br /><br />大家也可以利用其它的密钥，进行不同地方的加密解埽?<br /><br />总结：DES是一个相对比较老的加密算法，对于现在也不是最安全的，所以大家也可以利用别的加密算法进行加密解密，以得到更安全的系统。<br /><br />附：</font>
		</font>
		<a href="http://www.on-ly.com/download/src/DES-src-on-ly.com.rar">
				<font face="宋体">DESUtil.java及Base64.java的源文件</font>
		</a>
		<br />
<img src ="http://www.blogjava.net/jelver/aggbug/88145.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jelver/" target="_blank">都市淘沙者</a> 2006-12-16 12:07 <a href="http://www.blogjava.net/jelver/articles/88145.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>电子商务使用数据加密来保护数据库 </title><link>http://www.blogjava.net/jelver/articles/88136.html</link><dc:creator>都市淘沙者</dc:creator><author>都市淘沙者</author><pubDate>Sat, 16 Dec 2006 03:55:00 GMT</pubDate><guid>http://www.blogjava.net/jelver/articles/88136.html</guid><wfw:comment>http://www.blogjava.net/jelver/comments/88136.html</wfw:comment><comments>http://www.blogjava.net/jelver/articles/88136.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jelver/comments/commentRss/88136.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jelver/services/trackbacks/88136.html</trackback:ping><description><![CDATA[
		<div class="postTitle">
				<a href="http://blog.csdn.net/ezerg/archive/2005/10/25/515316.aspx">转 电子商务使用数据加密来保护数据库</a>
		</div>
		<div class="postText">
				<font face="宋体" color="#333333">　　摘 要：本文首先分析了数据库数据需要加密的原因，简要介绍了DES算法及Java密码体系和Java密码扩展，最后说明了利用DES加密算法保护数据库数据的方法及步骤。<br /><br />　　关键词 电子商务 Java 加密 DES算法<br /><br />　　Java语言是一种非常适用于网络编程的语言，它的基本结构与C++极为相似，但抛弃了C/C++中指针等内容，同时它吸收了Smalltalk、C++面向对象的编程思想。它具有简单性、鲁棒性、可移植性、动态性等特点。这些特点使得Java成为跨平台应用开发的一种规范，在世界范围内广泛流传。<br /><br />　　数据库数据需要加密的原因<br /><br />    电子商务网站中，数据库的信息至关重要，尤其现在货物的实时交易，使得一些比较重要的信息不得不存储在数据库或者其它容易泄露或者不安全的地方（当然，也没有绝对安全的），例如数字商品信息、银行卡账号等，一旦诸如黑客一般的网络高手成功入侵到我们的系统，如果我们的数据库信息没有加密，那么我们所有的东西便拱手相送了，这不仅危害了商户的利益，更使得客户遭受损失，进一步也会影响中国电子商务的里程，所以数据库中一些重要信息的加密起到的很重要的作用。<br />　<br />　　Java密码体系和Java密码扩展<br /><br />　　Java密码体系(JCA)和Java密码扩展(JCE)的设计目的是为Java提供与实现无关的加密函数API。它们都用factory方法来创建类的例程，然后把实际的加密函数委托给提供者指定的底层引擎,引擎中为类提供了服务提供者接口在Java中实现数据的加密/解密，是使用其内置的JCE(Java加密扩展)来实现的。Java开发工具集1.1为实现包括数字签名和信息摘要在内的加密功能，推出了一种基于供应商的新型灵活应用编程接口。Java密码体系结构支持供应商的互操作,同时支持硬件和软件实现。<br /><br />　　Java密码学结构设计遵循两个原则:<br /><br />　　(1)算法的独立性和可靠性。<br /><br />　　(2)实现的独立性和相互作用性。<br /><br />　　算法的独立性是通过定义密码服务类来获得。用户只需了解密码算法的概念,而不用去关心如何实现这些概念。实现的独立性和相互作用性通过密码服务提供器来实现。密码服务提供器是实现一个或多个密码服务的一个或多个程序包。软件开发商根据一定接口,将各种算法实现后,打包成一个提供器,用户可以安装不同的提供器。安装和配置提供器,可将包含提供器的ZIP和JAR文件放在CLASSPATH下,再编辑Java安全属性文件来设置定义一个提供器。Java运行环境Sun版本时, 提供一个缺省的提供器Sun。<br /><br />　　下面介绍DES算法及如何利用DES算法加密和解密类文件的步骤。<br /><br />　　DES算法简介<br /><br />　　DES（Data Encryption Standard）是发明最早的最广泛使用的分组对称加密算法。DES算法的入口参数有三个：Key、Data、Mode。其中Key为8个字节共64位，是DES算法的工作密钥；Data也为8个字节64位，是要被加密或被解密的数据；Mode为DES的工作方式，有两种：加密或解密。<br /><br />　　DES算法工作流程如下：若Mode为加密模式，则利用Key 对数据Data进行加密， 生成Data的密码形式（64位）作为DES的输出结果；如Mode为解密模式，则利用Key对密码形式的数据Data进行解密，还原为Data的明码形式（64位）作为DES的输出结果。在写入和读取的时候，使用一致的Key，在写入时Key对核心数据进行DES加密，然后存储在数据库中，数据要从数据库取出时，用同样的Key对密码数据进行解密，便再现了明码形式的核心数据。这样，便保证了核心数据在数据库存储的安全性和可靠性。<br /><br />    利用DES算法加密的步骤<br /><br />　　（1）生成一个安全密钥。在加密或解密任何数据之前需要有一个密钥。密钥是随同被加密的应用程序一起发布的一段数据，密钥代码如下所示。<br /><br />　　【生成一个密钥代码】<br />    // 生成一个可信任的随机数源<br />    SecureRandom sr = new SecureRandom();<br />    // 为我们选择的DES算法生成一个KeyGenerator对象<br />    KeyGenerator kg = KeyGenerator.getInstance ("DES" );<br />    Kg.init (sr);<br />    // 生成密钥<br />    Secret Key key = kg.generateKey();<br />    // 将密钥数据保存为文件供以后使用，其中key Filename为保存的文件名<br />    FileUtil.writeFile (keyFilename, key.getEncoded () ); <br /><br />　　（2）加密数据。得到密钥之后，接下来就可以用它加密数据。如下所示。<br /><br />　　【用密钥加密原始数据】<br /><br />    // 产生一个可信任的随机数源<br />    SecureRandom sr = new SecureRandom();<br />    //从密钥文件key Filename中得到密钥数据<br />    Byte rawKeyData [] = FileUtil.readFile (key Filename);<br />    // 从原始密钥数据创建DESKeySpec对象<br />    DESKeySpec dks = new DESKeySpec (rawKeyData);<br />    // 创建一个密钥工厂，然后用它把DESKeySpec转换成Secret Key对象<br />    SecretKeyFactory key Factory = SecretKeyFactory.getInstance("DES" );<br />    Secret Key key = keyFactory.generateSecret( dks );<br />    // Cipher对象实际完成加密操作<br />    Cipher cipher = Cipher.getInstance( "DES" );<br />    // 用密钥初始化Cipher对象<br />    cipher.init( Cipher.ENCRYPT_MODE, key, sr );<br />    // 获取需要加密的数据str<br />    Byte data [] = str.getBytes();<br />    // 执行加密操作<br />    Byte encryptedClassData [] = cipher.doFinal(data );<br />    // 保存到数据库中<br /><br />　　（3）解密数据。操作步骤如下所示。 <br /><br />　　【用密钥解密数据】<br /><br />    // 生成一个可信任的随机数源<br />    SecureRandom sr = new SecureRandom();<br />    // 从密钥文件中获取原始密钥数据<br />    Byte rawKeyData[] = Util.readFile( keyFilename );<br />    // 创建一个DESKeySpec对象<br />    DESKeySpec dks = new DESKeySpec (rawKeyData);<br />    // 创建一个密钥工厂，然后用它把DESKeySpec对象转换成Secret Key对象 <br />    SecretKeyFactory key Factory = SecretKeyFactory.getInstance( "DES" );<br />    SecretKey key = keyFactory.generateSecret( dks );<br />    // Cipher对象实际完成解密操作<br />    Cipher cipher = Cipher.getInstance( "DES" );<br />    // 用密钥初始化Cipher对象<br />    Cipher.init( Cipher.DECRYPT_MODE, key, sr );<br />    // 从数据库中获得经过加密的数据str<br />    Byte encrypted Data [] = str.getBytes();<br />    //执行解密操作<br />    Byte decryptedData [] = cipher.doFinal( encryptedData );<br />    // 然后将解密后的数据显示给客户。 <br /><br /><br />    我们需要开始在新系统里使用数据加密，如果不是在目前的系统里使用的话。我认为这是项很大的工程，这也就是为什么我说在新系统里使用数据加密，而不是在旧系统里加上数据加密功能。最好方法就是从那些你最常使用的数据库的提供厂商那里开始：Oracle、IBM和微软。然后看看大量的第三方供应商和其他互联网安全专家能够提供什么。无论你从哪里开始，最好都是今天开始，以免让自己成为明天报纸的头条新闻。</font>
		</div>
<img src ="http://www.blogjava.net/jelver/aggbug/88136.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jelver/" target="_blank">都市淘沙者</a> 2006-12-16 11:55 <a href="http://www.blogjava.net/jelver/articles/88136.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>