??xml version="1.0" encoding="utf-8" standalone="yes"?>久久久久久久久久久妇女,一区二区三区四区不卡在线,超碰成人97http://www.aygfsteel.com/xiaomage234/category/34729.html生命本就是一ơ凄的漂流Q记忆中放不下的Q永q是孩提时代的那一份浪漫与U真Q?/description>zh-cnSat, 14 Sep 2013 06:02:43 GMTSat, 14 Sep 2013 06:02:43 GMT60HTTP摘要認證http://www.aygfsteel.com/xiaomage234/archive/2013/09/13/404036.html马?/dc:creator>马?/author>Fri, 13 Sep 2013 04:05:00 GMThttp://www.aygfsteel.com/xiaomage234/archive/2013/09/13/404036.htmlhttp://www.aygfsteel.com/xiaomage234/comments/404036.htmlhttp://www.aygfsteel.com/xiaomage234/archive/2013/09/13/404036.html#Feedback0http://www.aygfsteel.com/xiaomage234/comments/commentRss/404036.htmlhttp://www.aygfsteel.com/xiaomage234/services/trackbacks/404036.html阅读全文

]]>
谈CSRFd方式http://www.aygfsteel.com/xiaomage234/archive/2013/04/24/398349.html马?/dc:creator>马?/author>Wed, 24 Apr 2013 09:00:00 GMThttp://www.aygfsteel.com/xiaomage234/archive/2013/04/24/398349.htmlhttp://www.aygfsteel.com/xiaomage234/comments/398349.htmlhttp://www.aygfsteel.com/xiaomage234/archive/2013/04/24/398349.html#Feedback0http://www.aygfsteel.com/xiaomage234/comments/commentRss/398349.htmlhttp://www.aygfsteel.com/xiaomage234/services/trackbacks/398349.html谈CSRFd方式2009-04-09 22:44 by hyddd, 18997 阅读, 39 评论, 收藏~辑

一.CSRF是什么?

  CSRFQCross-site request forgeryQ,中文名称Q跨站请求伪造,也被UCؓ(f)Qone click attack/session ridingQ羃写ؓ(f)QCSRF/XSRF?/p>

?CSRF可以做什么?

  你这可以q么理解CSRFdQ?span style="line-height: 1.8; color: #ff0000;">d者盗用了(jin)你的w䆾Q以你的名义发送恶意请?/span>。CSRF能够做的事情包括Q以你名义发送邮Ӟ发消息,盗取你的账号Q甚至于购买商品Q虚拟货币{?.....造成的问题包括:(x)个h隐私泄露以及(qing)财安全?/p>

?CSRF漏洞现状

  CSRFq种d方式?000q已l被国外的安全h员提出,但在国内Q直?6q才开始被x(chng)Q?8q_(d)国内外的多个大型C֌和交互网站分别爆出CSRF漏洞Q如QNYTimes.comQ纽U时报)(j)、MetafilterQ一个大型的BLOG|站Q,YouTube和百度HI......而现在,互联|上的许多站点仍Ҏ(gu)毫无防备Q以至于安全业界UCSRF?#8220;沉睡的巨?#8221;?/p>

?CSRF的原?/strong>

  下图单阐qC(jin)CSRFd的思想Q?/p>

  

  从上囑֏以看出,要完成一ơCSRFdQ?span style="line-height: 1.8; color: #0000ff;">受害者必Mơ完成两个步?/span>Q?/p>

  1.d受信ȝ站AQƈ在本地生成Cookie?/p>

  2.在不dA的情况下Q访问危险网站B?/p>

  看到q里Q你也许?x)说Q?#8220;如果我不满以上两个条g中的一个,我就不会(x)受到CSRF的攻?/span>”。是的,实如此Q但你不能保证以下情况不?x)发生?x)

  1.你不能保证你d?jin)一个网站后Q不再打开一个tab面q访问另外的|站?/p>

  2.你不能保证你关闭览器了(jin)后,你本地的Cookie立刻q期Q你上次的会(x)话已l结束。(事实上,关闭览器不能结束一个会(x)话,但大多数人都?x)错误的认?f)关闭览器就{于退出登?l束?x)话?.....Q?/p>

  3.上图中所谓的d|站Q可能是一个存在其他漏z的可信ȝl常被h讉K的网站?/p>

 

  上面大概地讲?jin)一下CSRFd的思想Q下面我用几个例子详细说说具体的CSRFdQ这里我以一个银行{账的操作作ؓ(f)例子Q仅仅是例子Q真实的银行|站没这么傻:>Q?/p>

  CZ1Q?/span>

  银行|站AQ它以GETh来完成银行{账的操作Q如Qhttp://www.mybank.com/Transfer.php?toBankId=11&money=1000

  危险|站BQ它里面有一DHTML的代码如下:(x)

  <img src=http://www.mybank.com/Transfer.php?toBankId=11&money=1000>

  首先Q你d?jin)银行网站AQ然后访问危险网站BQ噢Q这时你?x)发C的银行̎户少?000?.....

  Z么会(x)q样呢?原因是银行网站Aq反?jin)HTTP规范Q用GETh更新资源。在讉K危险|站B的之前,你已l登录了(jin)银行|站AQ而B中的<img>以GET的方式请求第三方资源Q这里的W三方就是指银行|站?jin),原本q是一个合法的hQ但q里被不法分子利用了(jin)Q,所以你的浏览器?x)带上你的银行网站A的Cookie发出GethQ去获取资源“http://www.mybank.com/Transfer.php?toBankId=11&money=1000”Q结果银行网站服务器收到h后,认ؓ(f)q是一个更新资源操作(转̎操作Q,所以就立刻q行转̎操作......

  CZ2Q?/strong>

  Z(jin)杜绝上面的问题,银行军_改用POSTh完成转̎操作?/p>

  银行|站A的WEB表单如下Q  

  <form action="Transfer.php" method="POST">
    <p>ToBankId: <input type="text" name="toBankId" /></p>
    <p>Money: <input type="text" name="money" /></p>
    <p><input type="submit" value="Transfer" /></p>
  </form>

  后台处理面Transfer.php如下Q?/p>

复制代码
  <?php
    session_start();
    if (isset($_REQUEST['toBankId'&& isset($_REQUEST['money']))
    {
        buy_stocks(
$_REQUEST['toBankId'], $_REQUEST['money']);
    }
  ?>
复制代码

  危险|站BQ仍然只是包含那句HTML代码Q?/p>

  <img src=http://www.mybank.com/Transfer.php?toBankId=11&money=1000>

  和示?中的操作一P你首先登录了(jin)银行|站AQ然后访问危险网站BQ结?....和示?一P你再ơ没?000块~T_TQ这ơ事故的原因是:(x)银行后台使用?_REQUEST去获取请求的数据Q?_REQUEST既可以获取GETh的数据,也可以获取POSTh的数据,q就造成?jin)在后台处理E序无法区分q到底是GETh的数据还是POSTh的数据。在PHP中,可以使用$_GET?_POST分别获取GETh和POSTh的数据。在JAVA中,用于获取h数据request一样存在不能区分GETh数据和POST数据的问题?/p>

  CZ3Q?/strong>

  l过前面2个惨痛的教训Q银行决定把获取h数据的方法也改了(jin)Q改?_POSTQ只获取POSTh的数据,后台处理面Transfer.php代码如下Q?/p>

复制代码
  <?php
    
session_start();
    
if (isset($_POST['toBankId'&& isset($_POST['money']))
    {
        buy_stocks(
$_POST['toBankId'], $_POST['money']);
    }
  
?>
复制代码

  然而,危险|站B与时pQ它改了(jin)一下代码:(x)

复制代码
<html>
  <head>
    <script type="text/javascript">
      function steal()
      {
               iframe 
= document.frames["steal"];
               iframe.document.Submit(
"transfer");
      }
    </script>
  </head>

  
<body onload="steal()">
    <iframe name="steal" display="none">
      <form method="POST" name="transfer" action="http://www.myBank.com/Transfer.php">
        
<input type="hidden" name="toBankId" value="11">
        
<input type="hidden" name="money" value="1000">
      
</form>
    </iframe>
  </body>
</html>
复制代码

如果用户仍是l箋(hu)上面的操作,很不q,l果会(x)是再ơ不?000?.....因ؓ(f)q里危险|站B暗地里发送了(jin)POSTh到银?

  ȝ一下上?个例子,CSRF主要的攻?yn)L式基本上是以上的3U,其中以第1,2U最Z重,因ؓ(f)触发条g很简单,一?lt;img>可以了(jin)Q而第3U比较麻?ch),需要用JavaScriptQ所以用的Z(x)?x)比前面的少很多Q但无论是哪U情况,只要触发?jin)CSRFdQ后果都有可能很严重?/p>

  理解上面?U攻?yn)L式,其实可以看出Q?span style="line-height: 1.8; color: #ff0000;">CSRFd是源于WEB的隐式n份验证机ӞWEB的n份验证机制虽然可以保证一个请求是来自于某个用L(fng)览器,但却无法保证该请求是用户批准发送的Q?/p>

?CSRF的防?/strong>

  我ȝ?jin)一下看到的资料QCSRF的防御可以从服务?/span>?span style="line-height: 1.8; color: #3366ff;">客户?/span>两方面着手,防M效果是从服务端着手效果比较好Q现在一般的CSRF防M也都在服务端q行?/p>

  1.服务端进行CSRF防M

  服务端的CSRF方式Ҏ(gu)很多P但ȝ思想都是一致的Q就是在客户端页?span style="line-height: 1.8; color: #ff0000;">增加伪随机数?/p>

  (1).Cookie Hashing(所有表单都包含同一个伪随机?Q?/p>

  q可能是最单的解决Ҏ(gu)?jin),因?f)d者不能获得第三方的Cookie(理论?Q所以表单中的数据也构造失败了(jin):>

  <?php
    //构造加密的Cookie信息
    $value = “DefenseSCRF”;
    setcookie(”cookie”, $value, time()+3600);
  ?>

  在表单里增加Hash|以认证这实是用户发送的h?/p>

复制代码
  <?php
    $hash = md5($_COOKIE['cookie']);
  ?>
  <form method=”POST” action=”transfer.php”>
    <input type=”text” name=”toBankId”>
    <input type=”text” name=”money”>
    <input type=”hidden” name=”hash” value=<?=$hash;?>>
    <input type=”submit” name=”submit” value=”Submit”>
  </form>
复制代码

  然后在服务器端进行Hash值验?/p>

复制代码
      <?php
        if(isset($_POST['check'])) {
             
$hash = md5($_COOKIE['cookie']);
             if($_POST['check'== $hash) {
                  doJob();
             } 
else {
        //...

             }
        } 
else {
      //...

        }
      
?>
复制代码

  q个Ҏ(gu)个h觉得已经可以杜绝99%的CSRFd?jin),那还?%?...׃用户的Cookie很容易由于网站的XSS漏洞而被盗取Q这另外的1%。一般的d者看到有需要算Hash|基本都会(x)攑ּ?jin),某些除外Q所以如果需?00%的杜l,q个不是最好的Ҏ(gu)?br />  (2).验证?/p>

  q个Ҏ(gu)的思\是:(x)每次的用h交都需要用户在表单中填写一个图片上的随机字W串Q厄....q个Ҏ(gu)可以完全解决CSRFQ但个h觉得在易用性方面似乎不是太好,q有听闻是验证码囄的用涉?qing)?jin)一个被UCؓ(f)MHTML的BugQ可能在某些版本的微软IE中受影响?/p>

  (3).One-Time Tokens(不同的表单包含一个不同的伪随机?

  在实现One-Time TokensӞ需要注意一点:(x)是“q行?x)话的兼?#8221;。如果用户在一个站点上同时打开?jin)两个不同的表单QCSRF保护措施不应该媄(jing)响到他对M表单的提交。考虑一下如果每ơ表单被装入时站点生成一个伪随机值来覆盖以前的伪随机值将?x)发生什么情况:(x)用户只能成功地提交他最后打开的表单,因ؓ(f)所有其他的表单都含有非法的伪随机倹{必d?j)操作以保CSRF保护措施不会(x)影响选项卡式的浏览或者利用多个浏览器H口览一个站炏V?/p>

  以下我的实现:

  1).先是令牌生成函数(gen_token())Q?/p>

复制代码
     <?php
     function gen_token() {
    //q里我是贪方便,实际上单使用Rand()得出的随机数作ؓ(f)令牌Q也是不安全的?br />    //q个可以参考我写的FindbugsW记中的《Random object created and used only once?/a>
          $token = md5(uniqid(rand(), true));
          
return $token;
     }
复制代码

  2).然后是Session令牌生成函数(gen_stoken())Q?/p>

复制代码
     <?php
     
  function gen_stoken() {
      $pToken = "";
      if($_SESSION[STOKEN_NAME]  == $pToken){
        //没有|赋新?br />      
  $_SESSION[STOKEN_NAME] = gen_token();
      }    
      else{
        //l箋(hu)使用旧的?br />      }

       }
     
?>
复制代码

  3).WEB表单生成隐藏输入域的函数Q  

复制代码
     <?php
       function gen_input() {
            gen_stoken();
            echo “<input type=\”hidden\” name=\”" . FTOKEN_NAME . “\”
                 value=\”" . $_SESSION[STOKEN_NAME] . “\”> “;
       }
     ?>
复制代码

  4).WEB表单l构Q?/p>

复制代码
     <?php
          
session_start();
          
include(”functions.php”);
     
?>
     
<form method=”POST” action=”transfer.php”>
          
<input type=”text” name=”toBankId”>
          
<input type=”text” name=”money”>
          
<? gen_input(); ?>
          
<input type=”submit” name=”submit” value=”Submit”>
     
</FORM>
复制代码

  5).服务端核对o(h)牌:(x)

  q个很简单,q里׃再啰嗦了(jin)?/p>

  上面q个其实不完全符?#8220;q行?x)话的兼?#8221;的规则,大家可以在此基础上修攏V?/p>

 

  其实q有很多惛_Q无奈精力有限,暂且打住Q日后补充,如果错漏Q请指出:>

  PSQ今天下午写q篇文档的时候FF崩溃?jin)一ơ,写了(jin)一半文章的全没?jin),郁闷好久T_T.......

  转蝲误明出处,谢谢[hyddd(http://www.cnblogs.com/hyddd/)]



]]>
图文详解Keepass使用教程http://www.aygfsteel.com/xiaomage234/archive/2013/04/18/398037.html马?/dc:creator>马?/author>Thu, 18 Apr 2013 08:45:00 GMThttp://www.aygfsteel.com/xiaomage234/archive/2013/04/18/398037.htmlhttp://www.aygfsteel.com/xiaomage234/comments/398037.htmlhttp://www.aygfsteel.com/xiaomage234/archive/2013/04/18/398037.html#Feedback0http://www.aygfsteel.com/xiaomage234/comments/commentRss/398037.htmlhttp://www.aygfsteel.com/xiaomage234/services/trackbacks/398037.htmlKeePass Password SafeQ以下简UKeePassQ是一套类似数据库理的密码管理YӞ通过密码和密钥,它能够提供一个够安全的密码存储I间。只要你Cq一个管理密码,妥善保管好密钥文件和数据库文Ӟ基本上可以安枕无忧了(jin)。同时KeePass也有强大的密码生成功能,l对比你自己想的要安全。它的操作方式也极ؓ(f) 单,没有复杂的步骤?/p>

一Q下载及(qing)安装
站长癄下蝲站最新版下蝲地址Qhttp://down.zzbaike.com/download/KeePass–1257.htmlQ下载安装包解压后双d装文件根据安装向导就可以安装?br style="padding: 0px; margin: 0px;" />
选择I accept意思也是我同意,然后nextQ下一步)(j)Q根据提Clnext可以安装成功?br style="padding: 0px; margin: 0px;" />软g是英文的Q安装好之后我们看到界面仍旧都是英文的,我们可以去http://keepass.info/translations.htmlQ中下蝲体中文插件复制放到安装目录下Q运行Y?#8220;KeePass”Q点?#8220;View”菜单?#8220;Change Language”命o(h)Q选择“体中?#8221;重新启动E序卛_?/p>


二:(x)使用软g
l过上面的步骤,我们q回到桌面双击keepass的快捷键Q就可以看到软g的语a已经变成中文的了(jin)

q样可以方便我们的使用?jin)?br style="padding: 0px; margin: 0px;" />如果是第一ơ用,我们首先的是要创建数据库Q也是存放密码的数据库QKeePass会(x)把你的所有密码存储在q个数据库中?br style="padding: 0px; margin: 0px;" />单击菜单上的“文g—新徏”Q选择数据库存攄路径

选择一个\径来保存我们的数据库Q然后点M存,

q里需要填入数据库理密码Qƈ要确认密码,我们同时要勾选上密匙文gQƈ选择密钥的保存(sh)|(可以选择不用密钥Q。这样将来在开启数据库时就?#8220;d?#8221;?#8220;密钥文g”同时具备才行。输入完毕后点击“定”然后点击创徏

鼠标在黑色区域划q生成的密码位数在下方可以很清楚的看刎ͼ然后点击定

在这里描q或者不描述都可以,点击定后就q入ȝ口ƈ可以看到一条示例记录,点击CZ记录在下方可以看到网址和密码ƈ且也创徏旉?a style="padding: 0px; margin: 0px; color: #aa752a;">

ȝ口的左边是密码群l,各个组又可建立子群l。右Ҏ(gu)你的密码记录。密码记录收U于不同的密码群l中。你可以使用Keepass默认的密码群l,或删除它们,创徏自己的密码组?/p>

在主H口双单击右键Q选择“d记录…”Q就可以~辑你的记录?jin)?x)记录标题Q用户名Q网址Q密码,备注{。可以空着不填。确认后完成了(jin)一条记录了(jin)Q在ȝ口右边的子窗口中看到刚才新增的密码条目?br style="padding: 0px; margin: 0px;" />

当你再次使用q个文gӞ选中该条记录Q在记录上右击鼠标就可以真正使用它了(jin)。你可以用户名拯后,可以在其它的Q何Y件中_脓(chung)?jin),q可以将用户名拖攑ֈ其它H口中。最后,一定要C保存密码Q点?#8220;文g->保存”Q或工具栏上的保存按钮?/p>

提示Q随着数据库里的记录数目的逐步增多Q通过“~辑”菜单中的“在数据库中查?#8221;?#8220;在此组内查?#8221;命o(h)可以q速的扑ֈ要查的信息。另外,我们可以把数据库导出为TXT、HTML、XML、CSV{格式,导入CSV、TXT、KeePass数据库等格式的文件?/p>

三:(x)数据库的配置

点击“文g->数据库设|?#8230;”Q在弹出的窗口的选择“安全”按钮创徏一个加密算法,q设|密钥的加密ơ数Q如果选择生成密钥的话Q。通常加密ơ数的数量辑ֈ10万,也就_?jin)?br style="padding: 0px; margin: 0px;" />

四:(x)Keepass数据的备?br style="padding: 0px; margin: 0px;" />首先要备份KeePass.exe所在目录中的KeePass.ini文g。其ơ,备䆾你所保存的密码数据库文gQ?.kdbQ。如果你生在?jin)密钥,q要保存密钥文g。以上文件打包后Q可以放入多动存储装|中Q或攑օ|络I间?br style="padding: 0px; margin: 0px;" />提示Q如果用L(fng)密码记录l常变动Q那么相应的KeePass数据也要l常备䆾。保存好你的数据。尽你有数不清的密码,但只需看好一个KeePass数据备䆾可以了(jin)?br style="padding: 0px; margin: 0px;" />五:(x)密码生成?br style="padding: 0px; margin: 0px;" />在添加记录时Q我们可以利用密码生成器来生成复杂的密码Q点?#8220;密码”右侧?#8220;生成”按钮Q调?#8220;密码生成?#8221;属性框Q然后,点击“定”按钮卛_自动生成随机密码。通过点击“***”按钮密码明文显C,清楚的看到由生成器所产生的字W串?br style="padding: 0px; margin: 0px;" />

六:(x)Keepass常用讄

打开【工兗?>【选项…】,可以对Keepass作设|了(jin)?br style="padding: 0px; margin: 0px;" />
?#8220;安全”选项卡中勾上Q设定锁定主H口旉Q?00Q自p|适合的时_(d)(j)
自动清空剪脓(chung)板时_(d)讄旉?U?br style="padding: 0px; margin: 0px;" />“高”选项卡中Ҏ(gu)需要勾上适合的选项?/p>

我们现在生活中各个方面都需要用到密码,|站Q邮,论坛Q银行卡{等Q用keepass可以方便的ؓ(f)我们服务记录各种不同的密码,使我们的操作更加省时高效Q管理更方便安全?/p>

版权x(chng)Q?/strong> 葫芦博客(www.huluboke.com )专栏作家原创
原文地址 http://www.huluboke.com/keepass-jiaocheng/转蝲请保留本版权信息



]]>
为Linode VPS配置监控宝SNMP监控http://www.aygfsteel.com/xiaomage234/archive/2012/11/09/391076.html马?/dc:creator>马?/author>Fri, 09 Nov 2012 03:10:00 GMThttp://www.aygfsteel.com/xiaomage234/archive/2012/11/09/391076.htmlhttp://www.aygfsteel.com/xiaomage234/comments/391076.htmlhttp://www.aygfsteel.com/xiaomage234/archive/2012/11/09/391076.html#Feedback0http://www.aygfsteel.com/xiaomage234/comments/commentRss/391076.htmlhttp://www.aygfsteel.com/xiaomage234/services/trackbacks/391076.html

VPS像一台服务器Q我们需要了(jin)解它的运行状态。虽然Linode控制面板已经有了(jin)很强大的监控图标功能Q但是还是不能满_?Ch的需求。这里我l大家推荐一个名为监控宝的服务,Linodel过单的配置可以支持SNMP监控Q以图表的Ş式监控CPU、IO和进E,能够自动?警,而且q一切都是免费的哦?/p>

jiankongbao-logo

目前提供的监控项?/strong>

  1. CPU使用率,监控CPU的用率比例Q包括用h?User)、内核?System)、I/O{待(IOWait)、空?Idle){?/li>
  2. q_负蝲Q监控Linux服务器的q_负蝲(load average)Q包括最q?分钟?分钟?5分钟{?/li>
  3. 内存?sh)用率,监控内存(sh)用率,对于Linux服务器,包括I闲内存、Buffer Cache、Page Cache、应用程序内存等
  4. 盘I(y)/OQ监控所有磁盘分区的I/O量Q包括写入和d
  5. |络量Q监控所有网l设备的量Q包括流入和出
  6. 盘I间使用率,监控所有磁盘分区的I间使用率,包括ȝ间和已用I间

有关更多的内容,误问:(x)http://blog.jiankongbao.com/?p=133

如何在Linode的VPS上配|监控宝SNMP监控

pȝ环境QCentos 5.6_32

我们可以使用yum命o(h)下蝲软g省去代码~译?ch)恼?/p>

1Q首先请关闭Centos的Selinux服务Q否则会(x)和snmp服务有冲H。关闭方法自行百度,很easy的?/p>

2Q在shell环境下,输入以下命o(h)Q?/p>

1、下载必要的SNMPlgQ以?qing)配|管理工P差不?0M

1yum install net-snmp net-snmp-devel net-snmp-utils

2、创建监控用P例如我创Z个用户名为jiankongbaoQ密码ؓ(f)123456的监控只读̎?/p>

1net-snmp-config --create-snmpv3-user -ro -A 1234565 jiankongbao

3、启动SNMP服务q且加入开机启动(大约耗费5M内存Q?/p>

1service snmpd start chkconfig snmpd on

4、检SNMP是否正常开?/p>

1snmpwalk -v 3 -u jiankongbao -a MD5 -A "123456" -l authNoPriv 127.0.0.1 sysDescr

如果q回cd容,p明SNMP服务已经配置好了(jin)?/p>

3Q配|SNMP服务安全问题

默认情况下,M机器可以通过SNMP服务的̎号密码通过UDP161端口q程获取服务器的状态,所以会(x)Ҏ(gu)务器安全产生威胁Q除?jin)徏立̎户和l̎ 户分配密码之外,q可以配合iptables只让监控宝的服务器访问Linode 的VPSQ彻底杜l安全隐(zhn)(账户密码+指定IP讉KSNMPl对专业U的安全Q?/p>

配置监控宝的iptablesQ只对监控宝的服务器开放SNMP?61QUDPQ端?/p>

1iptables -I INPUT -p udp -s 60.195.252.107 --dport 161 -j ACCEPT
2iptables -I INPUT -p udp -s 60.195.252.110 --dport 161 -j ACCEPT
3service iptables save
4service iptables restart

q样在服务器端SNMP的配|就O(jin)K?jin)?/p>

配置监控宝网站配|连接Linode的VPS

1Q在D条上方,d服务器监控,如图Q?/p>

填写服务器信? border=

名称LQIP填写(zhn)的Linode服务器IPQ服务器cd选择Linux/UNnix/Mac那一?/p>

2Q接下来填写SNMP服务的n份验证信?/p>

snmp讄

如果按照本文配置的话QSNMP传输协议版本选择3QSecurity Nmae是?zhn)刚才配置的用户名QPass Phrase是?zhn)刚才配置的密码(上文配置的?23456Q,验证选择MD5.

然后点击提交Q监控宝?x)验证(zhn)Linode VPS的SNMP讄Q需要稍{片刻,之后提示成功Q?/p>

服务器添加成? border=

如果不成功请(g)查是否填错了(jin)用户密码或者iptables生效?jin)没有?/p>

3Q下面选择监控目Q默认全部勾?/p>

选择监控目

q样的话Q监控宝部分配|完成了(jin)Q过一阵子p看到监控信息?jin)。是不是很简单啊Q?/p>

本文固定链接: http://www.limutian.com/linode-vps-configure-the-monitor-snmp/ | LMT的那些事



]]>
rsync 服务端和客户端配|?/title><link>http://www.aygfsteel.com/xiaomage234/archive/2011/11/02/362512.html</link><dc:creator>马?/dc:creator><author>马?/author><pubDate>Wed, 02 Nov 2011 02:32:00 GMT</pubDate><guid>http://www.aygfsteel.com/xiaomage234/archive/2011/11/02/362512.html</guid><wfw:comment>http://www.aygfsteel.com/xiaomage234/comments/362512.html</wfw:comment><comments>http://www.aygfsteel.com/xiaomage234/archive/2011/11/02/362512.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/xiaomage234/comments/commentRss/362512.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/xiaomage234/services/trackbacks/362512.html</trackback:ping><description><![CDATA[安装Q?yum install xinetd    rsync <br /><div><div>   rsync的试用方?nbsp;</div><div>一、设|Rsync Server?nbsp;</div><div>Rsync server需要设定四个方面:(x) </div><div>1Q规划徏立备份目录区 </div><div>2Q设? /etc/xinetd.d/rsync </div><div>3Q设? /etc/rsyncd.conf </div><div>4Q设? 密码文g?nbsp;</div><div></div><div>说明如下Q?nbsp;</div><div>1Q规划徏立备份目录区Q?nbsp;</div><div>你在rsync server上开一个较大的盘分割区,q在其下建立好备份用的目录。比如:(x)/home/asialinux?nbsp;</div><div>2Q设? /etc/xinetd.d/rsyncQ?nbsp;</div><div>?vi /etc/xinetd.d/rsync </div><div>#default: off </div><div>#description:The rsync server is a good addition to am ftp server,as it </div><div>#     allows crc checksumming etc. </div><div>service rsync </div><div>{ </div><div>     disable = no </div><div>     socket_type    = stream </div><div>     wait       = no </div><div>     user       = root </div><div>     server      = /usr/bin/rsync </div><div>     server_args    = --daemon </div><div>     log_on_failure += USERID </div><div>} </div><div>把其中的disable = yes 改ؓ(f) disable = no之后退Z存就可以?jin),q还没有完成Q还需启动rsync的服务?nbsp;</div><div>#service xinetd restart </div><div>或?nbsp;</div><div>#ntsysv </div><div>选中 </div><div>rsync定卛_?nbsp;</div><div>q样开通了(jin)873通道QportQ,一旦有rsync clientq接Qxinetd׃(x)把它转介lrsyncd跑port873?nbsp;</div><div></div><div>3Q设? /etc/rsyncd.conf </div><div>如果?etc下没有这个文Ӟ请不要迷惑,自己创徏一个不得?jin),假设要备份的机器名?f)asialinux(IP:192.168.0.1)Q?nbsp;</div><div>即Samba文g服务器:(x) </div><div>#vi /etc/rsyncd.conf </div><div>uid = nobody </div><div>gid = nobody </div><div>use chroot = no </div><div>max connections = 4 </div><div>pid file = /var/run/rsyncd.pid </div><div>lock file = /var/run/rsync.lock </div><div>log file = /var/log/rsyncd.log </div><div>secrets file = /etc/rsync.pass </div><div></div><div>[backup] </div><div>path = /home/server/asialinux </div><div>auth users = feixue </div><div>uid = root </div><div>gid = root </div><div>secrets file = /home/rsyncd.secrets </div><div>read only = no </div><div>退出vi~辑模式q保存?nbsp;</div><div></div><div>说明Q?nbsp;</div><div>[backup]代表Ʋ备份的L代号Q可以和L名相同,也可以自定。本例ؓ(f)backupQ而没有用asialinux以便大家在下面用rsync命o(h)时加以理解?nbsp;</div><div>Path是用来存放备䆾档案的绝对目录,请你一定要用mkdir开讑֥Q名U自定,如本例要?home目录下面建立server目录以及(qing)server下面的子目录asialinux?nbsp;</div><div>注:(x)如果你没有徏立目录、目录徏立的不对或者\径不对,都将不能q行rsync的备份,情况如下所C:(x) </div><div>#rsync –rvlHopDtS --password-file=/root/rsyncd.recrets /home feixue@testsmb::backup </div><div>@ERROR:chroot failed </div><div>rsync:connection unexpectedly closed (75 bytes read so far) </div><div>rsync error: error in rsync protocol data stream (code 12) at io.c(165) </div><div></div><div>auth users代表授权的̎P名称可自定?nbsp;</div><div>secrets file代表存储账号和密码的档案路径?nbsp;</div><div></div><div>当然Q大家可以在/etc/rsyncd.conf内加入更多的区块Q来备䆾多台L或者一C机的多个目录{,可以灉|q用?nbsp;</div><div></div><div>4Q设?密码文g </div><div>如果没有和ssh在一块儿q用的话Qrsyncd.secrets的内容很单,格式?账号Q密?nbsp;</div><div>例如Q?nbsp;</div><div>feixue:asialinux </div><div>注:(x)上述讑֮只是一个范例,请大家务必自定一l,千万不可以直接套用?nbsp;</div><div>账号和密码设定完成之后,Z(jin)安全Q还要对其属d权限q行限定Q我试q,server和client端的权限都设?00Ӟ只要密码两者相W,依然可以正常的备份。:(x)D </div><div>#chown root.root rsyncd.secrets </div><div>#chmod 600 rsyncd.secrets </div><div>q样Q我们的Rsync Server端就讑֮完成?jin),当然你可以查看rsync的记录日志档案,请参考:(x)/var/log/rsyncd.log?nbsp;</div><div></div><div>二、设|Rsync Client?nbsp;</div><div>假设Ʋ备份的机器名称为testsmbQIP:192.168.2.220Q下的目?home备䆾到Rsync ServerQasialinuxQ上。可以做如下讑֮Q?nbsp;</div><div>1.讑֮密码文g </div><div>2.试r(sh)sync执行指o(h) </div><div>3.rsync指o(h)攑օ工作排程QcrontabQ?nbsp;</div><div>说明如下Q?nbsp;</div><div>1.讑֮密码文g </div><div>假设把密码文件放?root/rsyncd.secretsQ内容很单,只要含有一行密码即可:(x) </div><div>#vi /root/rsyncd.secrets </div><div>asialinux </div><div>退出vi~辑模式q保存?nbsp;</div><div>注:(x)Z(jin)安全Q设定密码档案的属性ؓ(f)Q?00。rsyncd.secrets的密码一定要和Rsync Server密码讑֮档案里的密码一栗?nbsp;</div><div>如果不同Q将?x)出现如下的错? </div><div>#rsync –rvlHopDtS --password-file=/root/rsyncd.recrets /home feixue@testsmb::backup </div><div>@ERROR: auth failed on module backup </div><div>rsync: connection unexpectedly closed (90 bytes read so far) </div><div>rsync error: error in rsync protocol data stream (code 12) at io.c(165) </div><div>2. 试r(sh)sync执行指o(h) </div><div>一切设定完之后Q我们可以带着兴奋的心(j)情来试、体验一下Rsync的魅力吧Q)(j) </div><div># rsync –rvlHopDtS --password-file=/root/rsyncd.recrets /home feixue@testsmb::backup </div><div>如果出现如下所C的画面Q那么恭喜一下,成功?jin)?x) </div><div>上传备䆾 </div><div># rsync –rvlHopDtS --password-file=/root/rsyncd.recrets /home feixue@testsmb::backup </div><div>下蝲备䆾 </div><div># rsync -vzrtopg --delete --password-file=/etc/rsync.pass --progress user@192.168.1.26::shanxlu /home/wenti </div><div>building file list ... done </div><div>.profiles/Application Data/Microsoft/Office/WEBFDR16.INF </div><div>.profiles/Application Data/Microsoft/WELCOME/DEFAULT.WBM </div><div></div><div>若出现如? </div><div># rsync –rvlHopDtS --password-file=/root/rsyncd.recrets /home feixue@testsmb::backup </div><div>rsync: getaddrinto: testsmb 873: Name or service not know </div><div>rsync error: error in socket IO (code 10 ) at clientserver.c(83) </div><div></div><div>请分别编辑Rsync ServerQ假设hostname为asialinux,IP:192.168.0.1Q和Rsync ClientQ假设hostname为testsmbQIP:192.168.0.2Q的/etc/hosts文gQ分别加入对方的IP地址和机器名Q如? </div><div>[root@asialinux root]#vi /etc/hosts </div><div>192.168.0.2     testsmb </div><div>退出vi~辑模式q保存?nbsp;</div><div>Qroot@testsmb rootQ?vi /etc/hosts </div><div>192.168.0.1     asialinux </div><div>退出vi~辑模式q保存?nbsp;</div><div>如果没有出现期望的画面,那么h查一下你的设定?nbsp;</div><div></div><div>3.rsync指o(h)攑օ工作排程QcrontabQ?nbsp;</div><div>现在可以把我们的备䆾工作|入排程?jin),假设每天凌?点开始备份工作:(x) </div><div>#crontab –u root –e </div><div>0 1 * * * /usr/bin/rsync --password-file=/root/rsyncd.recrets /home feixue@testsmb::backup </div><div>如果你有其他的目录需要备份,则如法炮制吧 </div><div></div><div></div><div>@rsync 试用参数: </div><div>-h , --help 昄rsync求助资讯 </div><div>--version 示rsync版本 </div><div>-v , --verbose 复杂的输Z?nbsp;</div><div>-q , --quiet 安静(rn)模式Q几乎没有讯息生, 常用在以cron执行rsync </div><div>-I, --ignore-times 通常rsyncZ(jin)加快速度?x)忽略同h案大且同样,同样存取旉点的档案 </div><div>可以通过此参数开x(chng)快速检? </div><div>--size-only rsync   只检查档案大是否改?不管旉存取Ҏ(gu)否改?nbsp;</div><div>通常用在mirror, 且对Ҏ(gu)间不太正时 </div><div>-c, --checksum 在传送之前透过128bit的md4(g)查码来检查所有要传送的档案(?x)托满速度); </div><div>-a, --archive archive mode 权限保存模式,相当?-rlptgoD 参数. </div><div>很快速的保存几乎所有的权限讑֮,除了(jin)式q接(透过-H讑֮). </div><div>-r, --recursive 复制所有下面的资料(透过) </div><div>-R, --relative 使用相对路径 </div><div>? rsync foo/bar/foo.c remote:/tmp/ 在远端?tmp/foo.c档案 </div><div>rsync -R foo/bar/foo.c remote:/tmp/ 在远端?tmp/foo/bar/foo.c 档案 </div><div>-R, --relative 不用相对\?nbsp;</div><div>-b, --backup 目的地端先前已经存在的档案在传输或删除前?x)被备?nbsp;</div><div>--backup-dir=DIR 讑֮备䆾的资料夹 </div><div>--suffix=SUFFIX 指定备䆾的档案名U字Ş?预设为~) </div><div>-K, --keep-dirlinks 接收方将q接到资料夹的档案视料夹处理 </div><div>-l, --links 复制所有的q接 </div><div>-H, --hard-links 保留式q结 </div><div>-p, --perms 保留档案权限 </div><div>-o, --owner 保留档案所有?root only) </div><div>-g, --group 保留档案组 </div><div>-D, --devices 保留device资讯(root only) </div><div>-t, --times 保留旉?nbsp;</div><div>-n, --dry-run 不实际执行传? 只显C将?x)有的传输动?nbsp;</div><div>-S, --sparse 试d理稀疏的档案, 让这些档案在目的端占去较?yu)的碟I间 </div><div>-W, --whole-file 复制所有的档案, 不额外作(g)?nbsp;</div><div>--no-whole-file 关闭 --whole-file 参数 </div><div>-x, --one-file-system 不要跨越档案pȝ分界(只在一个档案系l处? </div><div>-B, --block-size=SIZE 强制透过rsyncE式L对修复block-sizeforce </div><div>-e --rsh=COMMAND 定义所试用的remote shell </div><div>--rsync-path=PATH 定义rsync在远端机器存放资料的路径 </div><div>--existing 只对比更新目的端已经存在的档?nbsp;</div><div>--ignore-existing 忽略目的断已l存在的档案(也就是不更新) </div><div>--delete 删除传送断已经不存?而目的端存在的档?nbsp;</div><div>--delete-excluded 除了(jin)把传送端已经不存? 而目的端存在的档案删除之? 也删?--exclude 参数所包含的档?nbsp;</div><div>--delete-after rsync预设?x)在档案传送前q行相关删除动作保接收端有_的档案空? </div><div>单可以透过 --delete-after 让删除动作在档案传送后在进行删?nbsp;</div><div>--ignore-errors 忽略M错误即是I/O error 也进?--delete 删除动作 </div><div>--max-delete=NUM 定义rsync不要删除过NUM个档?nbsp;</div><div>--partial rsync若遇C输过E中断时, ?x)把那些已经传输的档案删? </div><div>在某U状况下保留那些部分传送的档案是o(h)人高兴的; </div><div>你可以透过 --partial 参数辑ֈq个目的. </div><div>--partial-dir=DIR ?--partial 参数启动? 你还是可以定义rsync把那些部分传送的档案 </div><div>写入定义的资料夹, 而非直接写入目的?需要注意的? </div><div>此资料夹不应该被其他试用者可以写?(?/tmp) </div><div>--force 当目的端资料夹被传送端非资料夹名称覆盖? 强制rsync删除资料? 即该资料夹不是I的. </div><div>--numeric-ids 不将传送端档案的uid?qing)gid? 与目的端的用?组q行配对, </div><div>若传送端q没有uid?qing)gid的对应名U??原帐L(fng)l被删除的遗留档?, </div><div>或目的端没有相对应的帐号/组, 保留数字型式的uid/gid </div><div>--timeout=TIMEOUT 讑֮I/O 时的时?U?. 过q个U数而没有资料传? rsync会(x)l束. 预设?,也就是没有定义超时时?nbsp;</div><div>-T, --temp-dir=DIR 定义rsync在接收端产生暂时性的复制档案时用资料夹暂存Q?预设时直接在接收端资料夹直接产生暂存档案 </div><div>--compare-dest=DIR 定义rsync在目的端建立资料Ҏ(gu)比对传送过来的档案. </div><div>--link-dest=DIR ?--compare-dest 相同,但同时会(x)针对无法改变的档案徏立硬式连l? </div><div>-z, --compress 压羃模式, 当资料在传送到目的端进行档案压~? </div><div>-P -P参数?--partial --progress 相同.只是Z(jin)把参数简单化. </div><div>-C, --cvs-exclude 排除那些通常不希望传送的档案, 定义的方式与CVS传送相? </div><div>RCS SCCS CVS CVS.adm RCSLOG cvslog.* tags TAGS .make.state </div><div>.nse_depinfo *~ #* .#* ,* _$* *$ *.old *.bak *.BAK *.orig *.rej </div><div>.del-* *.a *.olb *.o *.obj *.so *.exe *.Z *.elc *.ln core .svn/ </div><div>W合以上条g的都?x)被忽略不传? </div><div>--exclude=PATTER W合PATTERN(规则表示?样式的档案不仅行传?nbsp;</div><div>--exclude-from=FILE ?--exclude 参数相同, 不过是把不进行传送的档案事先写入某一档案. </div><div>执行? 透过此参数让rsyncd. </div><div>(; #开头的行列或者空白会(x)被rsync忽略) </div><div>--include=PATTERN 定义rsync不要排除W合pattern样式的档?nbsp;</div><div>--include-from=FILE ?-include参数相同,只不q把要包含的档案写到某一档案. </div><div>--files-from=FILE 把要传送的档案名称都精的写入某一档案, 让rsyncd. </div><div>? rsync -a --files-from=/tmp/foo /usr remote:/backup </div><div>-0 --from0 定义档案所要读取的档案时null字元l尾. </div><div>--version 现四版本信息. </div><div>--daemon 定义rsync以daemon型态执?nbsp;</div><div>--no-detach 当以daemon形态执行时,不要q行分裂且变成背景程? </div><div>--address=ADDRESS 定义所要连?bind)的ip位置或者是host名称(daemon限定) </div><div>--config=FILE 定义所要读取的讑֮档rsyncd.conf位置(daemon限定) </div><div>预设gؓ(f) /usr/local/etc/rsyncd.conf </div><div>--port=PORT 定义rsyncd(daemon)要旨行的port(预设为tcp 873) </div><div>--blocking-io 使用blocking I/Oq结q端的shell, 如rsh, remsh </div><div>--no-blocking-io 使用non-blockingq结q端的shell, 如ssh(预设? </div><div>--stats 昄档案传送时的资讯状?nbsp;</div><div>--progress 昄传送的q度.(l档案传送时,怕无聊的人用?.) </div><div>--log-format=FORMAT 定义log的格?在rsyncd.conf讑֮) </div><div>--password-file=FILE 从档案读取与q端rsync伺服务连l的密码 </div><div>--bwlimit=KBPS 定义传输频宽的大?KBytes/U? </div><div>--write-batch=FILE 把记录资料写入一个档?l其他相同环境且相同需求的机器试用) </div><div>--read-batch=FILE 透过d记录档案来进行传?(档案?--write-batch 参数产生) </div><div>--checksum-seed=NUM 定义档案 checksum-seed 的大?byte) </div><div>-4 --ipv4 使用IPv4协定 </div><div>-6 --ipv6 使用IPv6协定 </div></div><br /><br /><img src ="http://www.aygfsteel.com/xiaomage234/aggbug/362512.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/xiaomage234/" target="_blank">马?/a> 2011-11-02 10:32 <a href="http://www.aygfsteel.com/xiaomage234/archive/2011/11/02/362512.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>https下弹出“本不但包含安全的内容Q也包含不安全的内容”的解决Ҏ(gu)http://www.aygfsteel.com/xiaomage234/archive/2011/05/14/350240.html马?/dc:creator>马?/author>Sat, 14 May 2011 08:02:00 GMThttp://www.aygfsteel.com/xiaomage234/archive/2011/05/14/350240.htmlhttp://www.aygfsteel.com/xiaomage234/comments/350240.htmlhttp://www.aygfsteel.com/xiaomage234/archive/2011/05/14/350240.html#Feedback0http://www.aygfsteel.com/xiaomage234/comments/commentRss/350240.htmlhttp://www.aygfsteel.com/xiaomage234/services/trackbacks/350240.html通过HTTPS讉K我们做的|站ӞM(x)弹出“本页不但包含安全的内容,也包含不安全的内?#8221;的对话框?
    q是׃|页中含?lt;iframe>Q但iframe的src属性没有设|造成的?
    解决该问题可用如下方法:(x) 
      客户端:(x)讄IE的属性。例Q在IE6上,工具-〉Internet选项-〉安全选项?〉自定义U别-〉将“昄混合内容”讄为启?卛_解决该问题。这个讨厌的对话框就不会(x)dC(jin)Q嘿ѝ?wbr>



]]>
java非对U加密的源代?RSA) http://www.aygfsteel.com/xiaomage234/archive/2008/09/19/229981.html马?/dc:creator>马?/author>Fri, 19 Sep 2008 09:15:00 GMThttp://www.aygfsteel.com/xiaomage234/archive/2008/09/19/229981.htmlhttp://www.aygfsteel.com/xiaomage234/comments/229981.htmlhttp://www.aygfsteel.com/xiaomage234/archive/2008/09/19/229981.html#Feedback0http://www.aygfsteel.com/xiaomage234/comments/commentRss/229981.htmlhttp://www.aygfsteel.com/xiaomage234/services/trackbacks/229981.html下蝲bcprov-jdk14-123.jar?br />   
  import javax.crypto.Cipher;
  import java.security.*;
  import java.security.spec.RSAPublicKeySpec;
  import java.security.spec.RSAPrivateKeySpec;
  import java.security.spec.InvalidKeySpecException;
  import java.security.interfaces.RSAPrivateKey;
  import java.security.interfaces.RSAPublicKey;
  import java.io.*;
  import java.math.BigInteger;
  
  /**
  * RSA 工具cR提供加密,解密Q生成密钥对{方法?br />   * 需要到http://www.bouncycastle.org下蝲bcprov-jdk14-123.jar?br />   *
  */
  public class RSAUtil {
  
  /**
  * 生成密钥?br />   * @return KeyPair
  * @throws EncryptException
  */
  public static KeyPair generateKeyPair() throws EncryptException {
  try {
  KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA",
  new org.bouncycastle.jce.provider.BouncyCastleProvider());
  final int KEY_SIZE = 1024;//没什么好说的?jin),q个值关pd块加密的大小Q可以更改,但是不要太大Q否则效率会(x)?br />   keyPairGen.initialize(KEY_SIZE, new SecureRandom());
  KeyPair keyPair = keyPairGen.genKeyPair();
  return keyPair;
  } catch (Exception e) {
  throw new EncryptException(e.getMessage());
  }
  }
  /**
  * 生成公钥
  * @param modulus
  * @param publicExponent
  * @return RSAPublicKey
  * @throws EncryptException
  */
  public static RSAPublicKey generateRSAPublicKey(byte[] modulus, byte[] publicExponent) throws EncryptException {
  KeyFactory keyFac = null;
  try {
  keyFac = KeyFactory.getInstance("RSA", new org.bouncycastle.jce.provider.BouncyCastleProvider());
  } catch (NoSuchAlgorithmException ex) {
  throw new EncryptException(ex.getMessage());
  }
  
  RSAPublicKeySpec pubKeySpec = new RSAPublicKeySpec(new BigInteger(modulus), new BigInteger(publicExponent));
  try {
  return (RSAPublicKey) keyFac.generatePublic(pubKeySpec);
  } catch (InvalidKeySpecException ex) {
  throw new EncryptException(ex.getMessage());
  }
  }
  /**
  * 生成U钥
  * @param modulus
  * @param privateExponent
  * @return RSAPrivateKey
  * @throws EncryptException
  */
  public static RSAPrivateKey generateRSAPrivateKey(byte[] modulus, byte[] privateExponent) throws EncryptException {
  KeyFactory keyFac = null;
  try {
  keyFac = KeyFactory.getInstance("RSA", new org.bouncycastle.jce.provider.BouncyCastleProvider());
  } catch (NoSuchAlgorithmException ex) {
  throw new EncryptException(ex.getMessage());
  }
  
  RSAPrivateKeySpec priKeySpec = new RSAPrivateKeySpec(new BigInteger(modulus), new BigInteger(privateExponent));
  try {
  return (RSAPrivateKey) keyFac.generatePrivate(priKeySpec);
  } catch (InvalidKeySpecException ex) {
  throw new EncryptException(ex.getMessage());
  }
  }
  /**
  * 加密
  * @param key 加密的密?br />   * @param data 待加密的明文数据
  * @return 加密后的数据
  * @throws EncryptException
  */
  public static byte[] encrypt(Key key, byte[] data) throws EncryptException {
  try {
  Cipher cipher = Cipher.getInstance("RSA", new org.bouncycastle.jce.provider.BouncyCastleProvider());
  cipher.init(Cipher.ENCRYPT_MODE, key);
  int blockSize = cipher.getBlockSize();//获得加密块大,如:(x)加密前数据ؓ(f)128个byteQ而key_size=1024 加密块大ؓ(f)127 byte,加密后ؓ(f)128个byte;因此共有2个加密块Q第一?27 byteW二个ؓ(f)1个byte
  int outputSize = cipher.getOutputSize(data.length);//获得加密块加密后块大?br />   int leavedSize = data.length % blockSize;
  int blocksSize = leavedSize != 0 ? data.length / blockSize + 1 : data.length / blockSize;
  byte[] raw = new byte[outputSize * blocksSize];
  int i = 0;
  while (data.length - i * blockSize > 0) {
  if (data.length - i * blockSize > blockSize)
  cipher.doFinal(data, i * blockSize, blockSize, raw, i * outputSize);
  else
  cipher.doFinal(data, i * blockSize, data.length - i * blockSize, raw, i * outputSize);
  //q里面doUpdateҎ(gu)不可用,查看源代码后发现每次doUpdate后ƈ没有什么实际动作除?jin)把byte[]攑ֈByteArrayOutputStream中,而最后doFinal的时候才所有的byte[]q行加密Q可是到?jin)此时加密块大小很可能已l超Z(jin)OutputSize所以只好用dofinalҎ(gu)?br />   
  i++;
  }
  return raw;
  } catch (Exception e) {
  throw new EncryptException(e.getMessage());
  }
  }
  /**
  * 解密
  * @param key 解密的密?br />   * @param raw 已经加密的数?br />   * @return 解密后的明文
  * @throws EncryptException
  */
  public static byte[] decrypt(Key key, byte[] raw) throws EncryptException {
  try {
  Cipher cipher = Cipher.getInstance("RSA", new org.bouncycastle.jce.provider.BouncyCastleProvider());
  cipher.init(cipher.DECRYPT_MODE, key);
  int blockSize = cipher.getBlockSize();
  ByteArrayOutputStream bout = new ByteArrayOutputStream(64);
  int j = 0;
  
  while (raw.length - j * blockSize > 0) {
  bout.write(cipher.doFinal(raw, j * blockSize, blockSize));
  j++;
  }
  return bout.toByteArray();
  } catch (Exception e) {
  throw new EncryptException(e.getMessage());
  }
  }
  /**
  *
  * @param args
  * @throws Exception
  */
  public static void main(String[] args) throws Exception {
  File file = new File("test.html");
  FileInputStream in = new FileInputStream(file);
  ByteArrayOutputStream bout = new ByteArrayOutputStream();
  byte[] tmpbuf = new byte[1024];
  int count = 0;
  while ((count = in.read(tmpbuf)) != -1) {
  bout.write(tmpbuf, 0, count);
  tmpbuf = new byte[1024];
  }
  in.close();
  byte[] orgData = bout.toByteArray();
  KeyPair keyPair = RSAUtil.generateKeyPair();
  RSAPublicKey pubKey = (RSAPublicKey) keyPair.getPublic();
  RSAPrivateKey priKey = (RSAPrivateKey) keyPair.getPrivate();
  
  byte[] pubModBytes = pubKey.getModulus().toByteArray();
  byte[] pubPubExpBytes = pubKey.getPublicExponent().toByteArray();
  byte[] priModBytes = priKey.getModulus().toByteArray();
  byte[] priPriExpBytes = priKey.getPrivateExponent().toByteArray();
  RSAPublicKey recoveryPubKey = RSAUtil.generateRSAPublicKey(pubModBytes,pubPubExpBytes);
  RSAPrivateKey recoveryPriKey = RSAUtil.generateRSAPrivateKey(priModBytes,priPriExpBytes);
  
  byte[] raw = RSAUtil.encrypt(priKey, orgData);
  file = new File("encrypt_result.dat");
  OutputStream out = new FileOutputStream(file);
  out.write(raw);
  out.close();
  byte[] data = RSAUtil.decrypt(recoveryPubKey, raw);
  file = new File("decrypt_result.html");
  out = new FileOutputStream(file);
  out.write(data);
  out.flush();
  out.close();
  }
  }
  
  加密可以用公钥,解密用私钥;或者加密用U钥。通常非对U加密是非常消耗资源的Q因此可以对大数据用对称加密如:(x)desQ具体代码可以看我以前发的脓(chung)子)(j)Q而对其对U密钥进行非对称加密Q这h保证?jin)数据?a class="channel_keylink" target="_blank">安全Q还能保证效率?

]]>
RSA法http://www.aygfsteel.com/xiaomage234/archive/2008/09/19/229980.html马?/dc:creator>马?/author>Fri, 19 Sep 2008 09:15:00 GMThttp://www.aygfsteel.com/xiaomage234/archive/2008/09/19/229980.htmlhttp://www.aygfsteel.com/xiaomage234/comments/229980.htmlhttp://www.aygfsteel.com/xiaomage234/archive/2008/09/19/229980.html#Feedback0http://www.aygfsteel.com/xiaomage234/comments/commentRss/229980.htmlhttp://www.aygfsteel.com/xiaomage234/services/trackbacks/229980.html   RSA法是第一个能同时用于加密和数字签名的法Q也易于理解和操作?br />   RSA是被研究得最q泛的公钥算法,从提出到现在已近二十q_(d)l历?jin)各U攻ȝ考验Q逐渐Zh们接受,普遍认ؓ(f)是目前最优秀的公钥方案之一。RSA的安全性依赖于大数的因子分解,但ƈ没有从理Z证明破译RSA的难度与大数分解隑ֺ{h(hun)。即RSA的重大缺h无法从理Z把握它的保密性能如何Q而且密码学界多数人士們֐于因子分解不是NPC问题?br />   RSA的缺点主要有QA)产生密钥很麻?ch),受到素数产生技术的限制Q因而难以做Cơ一密。B)分组长度太大Qؓ(f)保证安全性,n 臛_也要 600 bits以上Qɘq算代h(hun)很高Q尤其是速度较慢Q较对称密码法慢几个数量Q且随着大数分解技术的发展Q这个长度还在增加,不利于数据格式的标准化。目前,SET(Secure Electronic Transaction)协议中要求CA采用2048比特长的密钥Q其他实体?024比特的密钥?br />   q种法1978q就出现?jin),它是W一个既能用于数据加密也能用于数字签名的法。它易于理解和操作,也很行。算法的名字以发明者的名字命名QRon Rivest, AdiShamir 和Leonard Adleman?br />   RSA法是一U非对称密码法Q所谓非对称Q就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密?
  RSA的算法涉?qing)三个参敎ͼn、e1、e2?
  其中Qn是两个大质数p、q的积Qn的二q制表示时所占用的位敎ͼ是所谓的密钥长度?
  e1和e2是一对相关的|e1可以L取,但要求e1?p-1)*(q-1)互质Q再选择e2Q要?e2*e1)mod((p-1)*(q-1))=1?
  (n?qing)e1),(n?qing)e2)是密钥寏V?
  RSA加解密的法完全相同,设A为明文,B为密文,则:(x)A=B^e1 mod nQB=A^e2 mod nQ?
  e1和e2可以互换使用Q即Q?
  A=B^e2 mod nQB=A^e1 mod nQ?br /> 一、RSA 的安全?br />   RSA的安全性依赖于大数分解Q但是否{同于大数分解一直未能得到理Z的证明,因ؓ(f)没有证明破解 RSA׃定需要作大数分解。假讑֭在一U无d解大数的法Q那它肯定可以修Ҏ(gu)为大数分解算法。目前, RSA 的一些变U算法已被证明等价于大数分解。不怎样Q分解n是最昄的攻?yn)L法。现在,Z已能分解多个十进制位的大素数。因此,模数n 必须选大一些,因具体适用情况而定?br /> 二、RSA的速度
  ׃q行的都是大数计,使得RSA最快的情况也比DES慢上倍,无论是Y件还是硬件实现。速度一直是RSA的缺陗一般来说只用于量数据加密?br /> 三、RSA的选择密文d
  RSA在选择密文d面前很脆弱。一般攻击者是某一信息作一下伪? Blind)Q让拥有U钥的实体签|Ӏ然后,l过计算可得到它所惌的信息。实际上Q攻d用的都是同一个弱点,卛_在这样一个事实:(x)乘幂保留?jin)输入的乘法l构Q?
  ( XM )^d = X^d *M^d mod n
  前面已经提到Q这个固有的问题来自于公钥密码系l的最有用的特?-每个人都能用公钥。但从算法上无法解决q一问题Q主要措施有两条Q一条是采用好的公钥协议Q保证工作过E中实体不对其他实体L产生的信息解密,不对自己一无所知的信息{֐Q另一条是决不寚w生h送来的随机文档签名,{֐旉先用One-Way HashFunction Ҏ(gu)档作HASH处理Q或
四、RSA的公共模数攻?br />   若系l中共有一个模敎ͼ只是不同的h拥有不同的e和dQ系l将是危险的。最普遍的情冉|同一信息用不同的公钥加密Q这些公钥共模而且互质Q那末该信息无需U钥可得到恢复。设PZ息明文,两个加密密钥为e1和e2Q公共模数是nQ则Q?br />   C1 = P^e1 mod n
  C2 = P^e2 mod n
  密码分析者知道n、e1、e2、C1和C2Q就能得到P?br />   因ؓ(f)e1和e2互质Q故用Euclidean法能找到r和sQ满I(x)
  r * e1 + s * e2 = 1
  假设r敎ͼ需再用Euclidean法计算C1^(-1)Q则
  ( C1^(-1) )^(-r) * C2^s = P mod n
  另外Q还有其它几U利用公共模数攻ȝҎ(gu)。MQ如果知道给定模数的一对e和dQ一是有利于d者分解模敎ͼ一是有利于d者计出其它成对的e’和d’Q而无需分解模数。解军_法只有一个,那就是不要共享模数n?br />   RSA的小指数d?有一U提?RSA速度的徏议是使公钥e取较?yu)的|q样?x)加密变得易于实现Q速度?br />   所提高。但q样作是不安全的Q对付办法就是e和d都取较大的倹{?br />   RSA法是第一个能同时用于加密和数字签名的法Q也易于理解和操作。RSA是被研究得最q泛的公钥算法,从提出到现在已近二十q_(d)l历?jin)各U攻ȝ考验Q逐渐Zh们接受,普遍认ؓ(f)是目前最优秀的公钥方案之一。RSA的安全性依赖于大数的因子分解,但ƈ没有从理Z证明破译RSA的难度与大数分解隑ֺ{h(hun)。即RSA的重大缺h无法从理Z把握它的保密性能如何Q而且密码学界多数人士們֐于因子分解不是NPC问题?RSA的缺点主要有QA)产生密钥很麻?ch),受到素数产生技术的限制Q因而难以做Cơ一密。B)分组长度太大Qؓ(f)保证安全性,n 臛_也要 600 bits 以上Qɘq算代h(hun)很高Q尤其是速度较慢Q较对称密码法慢几个数量Q且随着大数分解技术的发展Q这个长度还在增加,不利于数据格式的标准化。目前,SET( Secure Electronic Transaction )协议中要求CA采用比特长的密钥Q其他实体用比特的密钥?

]]>
处理JavaE序中的内存漏洞http://www.aygfsteel.com/xiaomage234/archive/2008/09/19/229979.html马?/dc:creator>马?/author>Fri, 19 Sep 2008 09:10:00 GMThttp://www.aygfsteel.com/xiaomage234/archive/2008/09/19/229979.htmlhttp://www.aygfsteel.com/xiaomage234/comments/229979.htmlhttp://www.aygfsteel.com/xiaomage234/archive/2008/09/19/229979.html#Feedback0http://www.aygfsteel.com/xiaomage234/comments/commentRss/229979.htmlhttp://www.aygfsteel.com/xiaomage234/services/trackbacks/229979.htmlJava E序中也有内存漏z?当然有。与行的观늛反,?Java ~程中,内存ȝ仍然是需要考虑的问题。在本文中,(zhn)将?jin)解C么会(x)D内存漏洞以及(qing)何时应该x(chng)q些漏洞。?zhn)q有Z(x)实践一下在(zhn)自q目中解x(chng)z问题?br />   
  Java E序中的内存漏洞是如何显现出来的
  大多数程序员都知道,使用?Java q样的编E语a的一大好处就是,他们不必再担?j)内存的分配和释N题。?zhn)只须创徏对象Q当应用E序不再需要这些对象时QJava ?x)通过一U称?#8220;垃圾攉”的机制将q些对象删除。这U处理意味着 Java 已经解决?jin)困扰其他编E语a的烦(ch)人问?-- 可怕的内存漏洞。是q样的吗Q?br />   
  在深入讨Z前,我们先回一下垃圾收集的工作方式。垃圾收集器的工作是发现应用E序不再需要的对象Qƈ在这些对象不再被讉K或引用时它们删除。垃圾收集器从根节点Q在 Java 应用E序的整个生存周期内始终存在的那些类Q开始,遍历被引用的所有节点进行清除。在它遍历这些节点的同时Q它跟踪哪些对象当前正被引用着。Q何类只要不再被引用,它就W合垃圾攉的条件。当删除q些对象以后Q就可将它们所占用的内存资源返回给 Java 虚拟?(JVM)?br />   
  所以的是q样QJava 代码不要求程序员负责内存的治理和清除Q它?x)自动对无用的对象执行垃圾收集。但是,要紧记的一Ҏ(gu) 仅当一个对象不再被引用时才?x)被l计为无用的。图 1 说明?jin)这个概c(din)?br />   
 

  
?1. 无用但仍被引用的对象

  
  上面说明?jin)?Java 应用E序执行期间h不同生存周期的两个类。类 A 首先被实例化Qƈ?x)在很长一D|间或E序的整个生存期内存在。在某个时候,c?B 被创建,c?A d对这个新创徏的类的一个引用。现在,我们假定c?B 是某个用L(fng)面小部gQ它qhC甚臌除。假如没有清除类 A ?B 的引用,则即便不再需要类 BQƈ且即便在执行下一个垃圾收集周期以后,c?B 仍将存在q占用内存空间?br />   
  何时应该x(chng)内存漏洞Q?br />   假如(zhn)的E序在执行一D|间以后发?java.lang.OutOfMemoryError 错误Q则内存漏洞肯定是一个重大嫌疑。除?jin)这U明昄情况之外Q何时还应该x(chng)内存漏洞呢?持完主义观点的E序员肯定会(x)回答Q应该查扑ƈU正 所有内存漏z。但是,在得?gu)个结Z前,q有几个斚w需要考虑Q包括程序的生存期和漏洞的大?br />   
  完全有这L(fng)可能Q垃圾收集器在应用程序的生存期内可能始终不会(x)q行。不能保?JVM 何时以及(qing)是否?x)调用垃圾收集?-- 即便E序昑ּ地调?System.gc() 也是如此。通常Q在当前的可用内存能够满程序的内存需求时QJVM 不会(x)自动q行垃圾攉器。当可用内存?sh)能满需求时QJVM 首先尝试通过调用垃圾攉来释攑և更多的可用内存。假如这U尝试仍然不能释放够的资源QJVM 从操作pȝ获取更多的内存,直至辑ֈ{应的最大极限?br />   
  例如Q考虑一个小?Java 应用E序Q它昄一些用于修攚w|的单用L(fng)面元素,q且它有一个内存漏z。很可能到应用程序关闭时也不?x)调用垃圾收集器Q因?JVM 很可能有_的内存来创徏E序所需的全部对象,而此后可用内存则所剩无几。因此,在这U情况下Q即使某?#8220;?#8221;对象在程序执行时占用着内存Q它实际上ƈ没有什么用途?br />   
  假如正在开发的 Java 代码要全?24 时在服务器上运行,则内存漏z在此处的媄(jing)响就比在我们的配|实用程序中的媄(jing)响要大得多。在要长旉q行的某些代码中Q即使最的漏洞也会(x)D JVM 耗尽全部可用内存?br />   
  在相反的情况下,即便E序的生存期较短Q假如存在分配大量(f)时对象(或者若q吞噬大量内存的对象Q的M Java 代码Q而且当不再需要这些对象时也没有取消对它们的引用,则仍然可能达到内存极限?br />   
  最后一U情冉|内存漏洞无关紧要。我们不应该认ؓ(f) Java 内存漏洞像其他语aQ如 C++Q中的漏z那样危险,在那些语a中内存将丢失Q且永远不会(x)被返回给操作pȝ。在 Java 应用E序中,我们使不需要的对象依附于操作系lؓ(f) JVM 所提供的内存资源。所以从理论上讲Q一旦关?Java 应用E序?qing)?JVMQ所分配的全部内存将被返回给操作pȝ?br />   
  定应用E序是否有内存漏z?br />   Z(jin)查看?Windows NT q_上运行的某个 Java 应用E序是否有内存漏z,(zhn)可能试囑֜应用E序q行时观?#8220;dȝ?#8221;中的内存讄。但是,在观察了(jin)q行中的几个 Java 应用E序以后Q?zhn)会(x)发现它们比本地应用E序占用的内存要多得多。我做过的一?Java 目要?10 ?20 MB 的系l内存才能启动。而操作系l自带的 Windows EXPlorer E序只需 5 MB 左右的内存?br />   
  ?Java 应用E序内存?sh)用斚w应注重的另一Ҏ(gu)Q这个典型程序在 IBM JDK 1.1.8 JVM 中运行时占用的系l内存越来越多。似乎直Cؓ(f)它分配非常多的物理内存(sh)后它才开始向pȝq回内存。这些情冉|内存漏洞的征兆吗Q?br />   
  要理解其中的~由Q我们必ȝ(zhn)?JVM 如何系l内存用作它的堆。当q行 java.exe Ӟ(zhn)用一定的选项来控制垃圾收集堆的v始大和最大大(分别?-ms ?-mx 表示Q。Sun JDK 1.1.8 的默认v始设|ؓ(f) 1 MBQ默认最大设|ؓ(f) 16 MB。IBM JDK 1.1.8 的默认最大设|ؓ(f)pȝȝ理内存大的一半。这些内存设|对 JVM 在用内存时所执行的操作有直接影响。JVM 可能l箋(hu)增大堆,而不{待一个垃圾收集周期的完成?br />   
  q样Qؓ(f)?jin)查扑ƈ最l消除内存漏z,我们需要用比d监视实用E序更好的工兗当(zhn)试图调试内存漏z时Q内存调试程序(请参阅参考资源)(j)可能z־上用场。这些程序通常?x)显C堆中的对象数、每个对象的实例数和q些对象所占用的内存等信息。此外,它们也可能提供有用的视图Q这些视囑֏以显C每个对象的引用和引用者,以便(zhn)跟t内存漏z的来源?br />   
  下面我将说明我是如何?Sitraka Software ?JProbedebugger (g)和去除内存漏洞的,以(zhn)对q些工具的部|方式以?qing)成功去除漏z所需的过E有所?jin)解?br />   
  内存漏洞的一个示?br />   本例集中讨论一个问题,我们部门当时正在开发一个商业发行版软gQ这是一?Java JDK 1.1.8 应用E序Q一个测试h员花?jin)几个小时研I这个程序才最lɘq个问题昄出来。这?Java 应用E序的基本代码和包是由几个不同的开发小l在不同的时间开发的。我猜想Q该应用E序中意外出现的内存漏洞是由那些没有真正理解别h开发的代码的程序员造成的?br />   
  我们正在讨论?Java 代码{应用户?Palm 个h数字助理创徏应用E序Q而不必编写Q?Palm OS 本地代码。通过使用囑Ş用户界面Q用户可以创建窗体,向窗体中d控gQ然后连接这些控件的事g来创?Palm 应用E序。测试h员发玎ͼ随着不断创徏和删除窗体和控gQ这?Java 应用E序最l会(x)耗尽内存。开发h员没有检到q个问题Q因Z们的机器有更多的物理内存?br />   
  Z(jin)研究q个问题Q我?JProbe 来确定什么地方出?jin)差错。尽用?JProbe 所提供的强大工具和内存快照Q研I仍然是一个冗长乏呟뀁不断重复的q程Q首先要定出现内存漏洞的原因,然后修改代码Q最后还得检验结果?br />   
  JProbe 提供几个选项Q用来控制调试期间实际记录哪些信息。经q几ơ试验以后,我断定获取所需信息的最有效Ҏ(gu)是,关闭性能数据攉Q而将注重力集中在所捕捉的堆数据上。JProbe 提供?jin)一个称?Runtime Heap Summary 的视图,它显C?Java 应用E序q行时所占用的堆内存量随旉的变化。它q提供了(jin)一个工h按钮Q必要时可以强制 JVM 执行垃圾攉。假如?zhn)试图弄清楚,?Java 应用E序不再需要给定的cd例时Q这个实例会(x)不会(x)被作为垃圾收集,q个功能很有用。图 2 昄?jin)用中的堆存储量随旉的变化?br />   
 

  
?2. Runtime Heap Summary

  
  ?Heap Usage Chart 中,蓝色部分表明已分配的堆空间大。在启动q个 Java E序q达到稳定状态以后,我强制垃圾收集器q行Q在图中的表现就是绿U(q条U表明插入了(jin)一个检查点Q左侧的蓝线的骤降。随后,我添加了(jin)四个H体Q然后又它们删除,q再ơ调用了(jin)垃圾攉器。当E序q回仅有一个可视窗体的初始状态时Q检查点之后的蓝色区域高?sh)检查点之前的蓝色区域这一情况表明可能存在内存漏洞。我通过查看 Instance Summary 证实实有一个漏z,因ؓ(f) Instance Summary 表明 FormFrame c(它是H体的主用户界面c)(j)的计数在(g)查点之后增加?4?br />   
  查找原因
  Z(jin)测试h员报告的问题剔出Q我采取的第一个步骤是扑և几个单的、可重复的测试案例。就本例而言Q我发现只须d一个窗体,它删除Q然后强制执行垃圾收集,l果׃(x)D与被删除H体相关联的许多cd例仍然处于活动状态。这个问题在 JProbe ?Instance Summary 视图中很明显Q这个视囄计每?Java cd堆中的实例数?br />   
  Z(jin)查明使垃圾收集器无法正常完成其工作的那些引用Q我使用 JProbe ?Reference GraphQ如?3 所C)(j)来确定哪些类仍然引用着目前未被删除?FormFrame cR在调试q个问题时该q程是最复杂的过E之一Q因为我发现许多不同的对象仍然引用着q个无用的对象。用来查明究竟是哪个引用者真正造成q个问题的试错过E相当耗时?br />   
  在本例中Q一个根c(左上角用U色标明的那个类Q是问题的发源地。右侧用蓝色H出昄的类处在从最初的 FormFrame c跟t而来的\径上?br />   


  
?3. 在引

资料引用:http://www.knowsky.com/365325.html



]]>
动态口令(OTPQOne-Time passwordQ?/title><link>http://www.aygfsteel.com/xiaomage234/archive/2008/09/19/229978.html</link><dc:creator>马?/dc:creator><author>马?/author><pubDate>Fri, 19 Sep 2008 09:07:00 GMT</pubDate><guid>http://www.aygfsteel.com/xiaomage234/archive/2008/09/19/229978.html</guid><wfw:comment>http://www.aygfsteel.com/xiaomage234/comments/229978.html</wfw:comment><comments>http://www.aygfsteel.com/xiaomage234/archive/2008/09/19/229978.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/xiaomage234/comments/commentRss/229978.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/xiaomage234/services/trackbacks/229978.html</trackback:ping><description><![CDATA[动态口令,也被成ؓ(f)一ơ性口令(OTPQOne-Time passwordQ?br />   OTP试图解决用户选择强壮密码时的一些问题。大多数OTPZ双要素认证原则运行。要认证一个系l,你需要拥有一个o(h)牌卡和你的个别码(PIN personal identification number)。生成和同步密码的方法随OTPpȝ的不同而不同。在一U比较流行的OTPҎ(gu)中,令牌卡在一个时间间隔内(通常?60S)生成登陆密码。这个看上去随机的数字串实际上与OTP服务器和令牌上运行的数学法紧密相关。一个由令牌生成的登录密码可能类D?4F40D974。PIN要么与算法一起用生成登录密?随后变成OTP)Q要么与登陆密码一起用?br />   使用q法和PIN生成d密码的系l防止个人反复嗅探网l后获得用户的PIN。OTP用以下方法改q了(jin)密码Q?br />   >用户再也不能选择弱密?br />   >用户只要CPINQ而不用记住传l的强密?br />   > 一旦密码被使用一ơ,U\上嗅探到的密码就已经失效<br />   当然没有大面U的密码pȝ使用OTP是有原因的,OTP也有一些缺点:(x)<br />   > 用户需要拥有o(h)牌卡q行认证<br />   >OTP需要一台额外的服务器接受来自认证服务器中的请?br />   >使用OTP输入一个密码比输入一个用户需要记住的密码旉p更高<br />   > 在大型网l中OTPh不菲<br />   当考虑OTPM评h(hun)Ӟ它显然是一U有价值的技术,只是不能到处使用。大多数的机构选择OTP用于他们安全{略中的关键pȝQ或用在密码破解试较多的地斏V对于一个典型的机构Q该地方以ؓ(f)着是胦(ch)务和人力资源pȝQ也可以是拨h虚拟专用|这L(fng)q程pȝ?br />   动态口令,又叫动态o(h)牌、动态密码。它的主要原理是Q用L(fng)录前Q依据用L(fng)n份信息,q引入随机数产生随机变化的口令,使每ơ登录过E中传送的口o(h)信息都不同,以提高登录过E中用户w䆾认证的安全性?<br />   ׃口o(h)每次都变化,即得到密码也没用,而且q种动态口令由专用法生成Q随机性高Q不太容易被破解。因此,动态口令极大地提高?sh)(jin)用戯n份认证的安全性? <img src ="http://www.aygfsteel.com/xiaomage234/aggbug/229978.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/xiaomage234/" target="_blank">马?/a> 2008-09-19 17:07 <a href="http://www.aygfsteel.com/xiaomage234/archive/2008/09/19/229978.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">½</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">̨</a>| <a href="http://" target="_blank">Ρɽ</a>| <a href="http://" target="_blank">봨</a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank">Դ</a>| <a href="http://" target="_blank">Ʊ</a>| <a href="http://" target="_blank">ְ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ī񹤿</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ʡ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">С</a>| <a href="http://" target="_blank">֦</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ʯ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ǿ</a>| <a href="http://" target="_blank">ϻ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ҫ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ϻ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ӽ</a>| <a href="http://" target="_blank"></a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>