六月丁香五月婷婷,丁香五月婷婷网,欧美激情网站,日本护士xxxx,禁止18岁天天操夜夜操,18岁禁止1000免费,国产福利无码一区色费

學(xué)習(xí)啦>學(xué)習(xí)電腦>網(wǎng)絡(luò)知識(shí)>網(wǎng)絡(luò)技術(shù)>

如何正確地使用加密與認(rèn)證技術(shù)(4)

時(shí)間: 恒輝636 分享

  0x04 認(rèn)證

  如上所述,認(rèn)證旨在提供信息的完整性(我們指顯著抗篡改能力),而這證明它來(lái)自預(yù)期的源(真實(shí)性)。這樣做的典型方法是,為信息計(jì)算一個(gè)密鑰散列消息認(rèn)證碼(HMAC的簡(jiǎn)稱(chēng)),并將信息與它連結(jié)。

  function hmac_sign($message, $key)

  {

  return hash_hmac('sha256', $message, $key) . $message;

  }

  function hmac_verify($bundle, $key)

  {

  $msgMAC = mb_substr($bundle, 0, 64, '8bit');

  $message = mb_substr($bundle, 64, null, '8bit');

  return hash_equals(

  hash_hmac('sha256', $message, $key),

  $msgMAC

  );

  }

  重要的是,這里使用一個(gè)適當(dāng)?shù)墓9ぞ?,如HMAC,而不僅僅是一個(gè)簡(jiǎn)單的散列函數(shù)。

  function unsafe_hash_sign($message, $key)

  {

  return md5($key.$message) . $message;

  }

  function unsafe_hash_verify($bundle, $key)

  {

  $msgHash = mb_substr($bundle, 0, 64, '8bit');

  $message = mb_substr($bundle, 64, null, '8bit');

  return md5($key.$message) == $msgHash;

  }

  我在這兩個(gè)函數(shù)名前面加了unsafe,是因?yàn)樗鼈冞€是易受到一些缺點(diǎn)的危害:

  Timing Attacks

  Chosen Prefix Attacks on MD5 (PDF)

  Non-strict equality operator bugs (largely specific to PHP)

  現(xiàn)在,我們有點(diǎn)接近我們強(qiáng)大的對(duì)稱(chēng)加密認(rèn)證的目標(biāo)。目前仍有幾個(gè)問(wèn)題,如:

  如果我們的原始信息以空字節(jié)結(jié)尾會(huì)發(fā)生什么?

  有沒(méi)有一個(gè)比mcrypt擴(kuò)展庫(kù)默認(rèn)使用的更好的填充策略?

  由于使用AES,有哪些通信方面是易受攻擊的?

  幸運(yùn)的是,這些問(wèn)題在現(xiàn)有的加密函數(shù)庫(kù)中已有了解答。我們強(qiáng)烈推薦你使用現(xiàn)有的庫(kù),而不是寫(xiě)自己的加密功能。對(duì)于PHP開(kāi)發(fā)人員來(lái)說(shuō),你應(yīng)該使用defuse/php-encryption(或者libsodium)。

如何正確地使用加密與認(rèn)證技術(shù)(4)

0x04 認(rèn)證 如上所述,認(rèn)證旨在提供信息的完整性(我們指顯著抗篡改能力),而這證明它來(lái)自預(yù)期的源(真實(shí)性)。這樣做的典型方法是,為信息計(jì)算一個(gè)密鑰
推薦度:
點(diǎn)擊下載文檔文檔為doc格式
168319