PHPはカスタムキーを用いてデータの暗号解読を実現する方法

1786 ワード

この例では、PHPがカスタムキーを用いてデータの暗号化復号化を実現する方法について説明する.皆さんの参考にしてください.具体的には以下の通りです.
クライアントとサービス側が通信する場合、idをurlパラメータとして渡すシーンがよくあります.現在業務上このid識別子しかないと仮定すると,少し安全な通信が必要であり,このidを暗号化して伝送し,サービス側に復号する.ここでは、暗号化および復号化を行うために、秘密保持を行うkeyが必要である.
復号化の方法は、$strは復号化が必要な文字列であり、$keyは自分で定義したkeyである.

//   
function encryptStr($str, $key){
  $block = mcrypt_get_block_size('des', 'ecb');
  $pad = $block - (strlen($str) % $block);
  $str .= str_repeat(chr($pad), $pad);
  $enc_str = mcrypt_encrypt(MCRYPT_DES, $key, $str, MCRYPT_MODE_ECB);
  return base64_encode($enc_str);
}
//   
function decryptStr($str, $key){
  $str = base64_decode($str);
  $str = mcrypt_decrypt(MCRYPT_DES, $key, $str, MCRYPT_MODE_ECB);
  $block = mcrypt_get_block_size('des', 'ecb');
  $pad = ord($str[($len = strlen($str)) - 1]);
  return substr($str, 0, strlen($str) - $pad);
}


特筆すべきは、
urlに適用されるidのこのシーンといえば、暗号化された後はbase 64の符号化であり、さらにurlencode()で+番号の影響を除去することをお勧めします.
PS:暗号解読に興味のある方は、当駅のオンラインツールも参考にしてください.
文字オンライン暗号解読ツール(AES、DES、RC 4などを含む):http://tools.jb51.net/password/txt_encode
MD 5オンライン暗号化ツール:http://tools.jb51.net/password/CreateMD5Password
オンラインハッシュ/ハッシュアルゴリズム暗号化ツール:http://tools.jb51.net/password/hash_encrypt
オンラインMD 5/hash/SAH-1/SAH-2/SAH-256/SAH-512/SAH-3/RIPEMD-160暗号化ツール:http://tools.jb51.net/password/hash_md5_sha
オンラインsha 1/sha 224/sha 256/sha 384/sha 512暗号化ツール:http://tools.jb51.net/password/sha_encode
PHPについてもっと兴味のある読者は、「php暗号化方法総括」、「PHP符号化とトランスコード操作技巧総括」、「PHP数学演算技巧総括」、「PHP配列(Array)操作技巧大全」、「php文字列(string)用法総括」、「PHPデータ構造とアルゴリズム教程」、「phpプログラム設計アルゴリズム総括」及び「php正則表現用法総括」
ここで述べたことが皆さんのPHPプログラム設計に役立つことを願っています.