コードを見てみましょう!
暇なときに書いたので、修正を歓迎します
<br> CommonNDV.php<br> /**<br> * NDV (完全デジタルビザではありません)<br> * 不完全なデジタルビザ<br> *<br> * -------------------------------------------------- --- <br> * * KSEF (Kee Simply Efficient Framework) プロジェクトの拡張ライブラリ関数 <br> に属する NDV (基本関数ライブラリ ファイル) * @author Kee <chinboy2012><br> * @日付 2012 年 12 月 10 日<br> * @バージョン アルファ 1.0<br> <br> <br> * -------------------------------------------------- --- <br> */<br> クラス NDV{<br> private $Str_list = array();<br> private $SafeStr = null;<br> private $BinCode = null;<br> private $Md5Code = null;<br> プライベート $Sh1Code = null;<br> private $SafeCode = null;<br> <br> パブリック関数 NDVa($str, $mode = 'NDV'){<br> $this->NDV_list($str);<br> $this->NDV_Safe_Add();<br> $this->NDV_4in1();<br> If($mode == 'NDV'){<br> //出力 52 ビット混合エンコーディング、デフォルト オプション <br> $this-> を返す;<br> }elseif($mode == 'BIN'){<br> //20桁のバイナリチェックコードを出力<br> $this->BinCode を返します;<br> }elseif($mode == 'MD5'){<br> //MD5チェックコードとして32を出力<br> $this->Md5Code を返します;<br> }elseif($mode == 'SH1'){<br> //32ビットSh1チェックコードを出力<br> $this->Sh1Code を返します;<br> }<br> }<br> <br> プライベート関数 NDV_list($str) {<br> $Str_Len = strlen($str); //文字列の長さを計算します<br> $Str_Arr = array() //文字列配列を逆アセンブルします<br> $Str_list = array() //混合リスト<br> // $mod3 = $Str_Len%3 //モジュロ 3 値<br> $Len3 = intval($Str_Len / 3) // 3 で割って四捨五入 <br> $list = 0;<br> <br> //ループを実行し、文字列を分解し、混合順序で並べます<br> for ($i = 0, $x = 0; $i $Str_Arr[$x] = md5(md5(substr($str, $i, 3)) . md5($str)); //文字列を逆アセンブルし、文字列の概要を取得して 64 ビット混合エンコーディングを取得します<br> //混合順序 <br> $this->BinCode .= $Str_Arr[$x] % 2;<br> If ($Str_Arr[$x] % 2 == 1) {<br> //モジュロ 2 の値が 1 の場合、シーケンスは沈みます<br> $Str_list[$Len3] = $Str_Arr[$x];<br> $Len3--;<br> } elseif ($Str_Arr[$x] % 2 == 0) {<br> //モジュロ 2 の値が 0 の場合、シーケンスは浮動します<br> $Str_list[$list] = $Str_Arr[$x];<br> $リスト ; <div class="clear"></div></chinboy2012>