スポンサーサイト 

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

DES暗号化プログラム完成 

ついに、DES暗号化プログラムが完成しました。

セキュリティの授業でDESの暗号化をしろっていう課題がでまして。
そんで、どうしようかっていうことで、PHPでDESの暗号化プログラムを書こうっていうことでやってたのですが。


でね、とりあえず、それらしいものはできたのですが、暗号化が正しくできていないっていうことが分かったっていうところまではいったのですが、どこがバグなのかわからない状態であきらめていたのですが。

正しく暗号化できるというところまで行きました。



というわけで、実際に動作しているところをお見せします。

http://kai-hiro.ddo.jp/dec.php


で、もう、提出が明日までなので、ソースも公開したいと思います。


まあ、これをちょっといじくれば、フォームから入力して・・・・っていうこともできるようになります。
っていうか、やれって言われたら、5分もかからないと思いますが。



てか、PHPに関しては、かなり完璧になってきたと自分では思い込んでます(笑



うちのサークルの番組自動配信システムを、バージョンアップさせました。
新入生特番も番組配信システムを利用することになりまして、10分もかからずに、特番も配信できるようにできました。

てか、ちょっとif文を書いたりするだけなんですけど。

特番用のxmlファイルも出力するようにしたりもしましたし。


とりあえず、特番配信ができるようになったってことですわ。



いま、ちょっとしたプロジェクトをはじめようと思っていまして。

次は、やっぱりactionscriptだろうっていう風に思っています。

ただ、そろそろ試験が始まりそうで・・・・。

でも、actionscriptの本は買わないとだめだよな(笑


今週中にでもかっちゃおうと思います。

ビックカメラにいかないと(笑


まあまあ、そんな感じですね。



そういえば、知らない人も多いみたいなので。

僕は新しくブログを書いています。


こことは別にっていうことで。



うちのサークルの公式ブログです。


東京工科大学公認インターネットラジオサークルM.R.E公式ブログ


で合ってると思うんですけどね(笑
ちがったらごめん。

アドレスは覚えてるつもりなんですけどね。

まあ、こっちにも、ちょくちょく書いてますので、暇な人は見てください。


よろしくお願いします。

まあ、こっちのほうは、サークルメンバーがみんながわいわい書いている感じなので。



じゃ、以下、僕が書いたDESの暗号化プログラムっていうことで。
ただ、ちょっと分かる人がみたら、なんじゃこりゃって言うと思う。
とにかく、できればいいやっていうことでめちゃくちゃ非効率的なことをやったり、意味不明なことをやっていたりします。

自分でも、そこらへんは分かっていることです(笑

なので、まあ、そういう気持ちで見てください。

僕のプログラミングの主義は、動けばいい。ですから(笑


メモリを大量に使おうが、CPUを大量に使おうが、そんなことはどうでもいいんです。
とにかく、開発スピードが重要なんです。(笑

なんていう、いいわけ(笑













//平文
$gakuseki = 106017;

//共通鍵
$kagi ="1101000001000110000101110000000110010000000101010101001001101011";
print "共通鍵は
${kagi}です。
";

//2進数変換
$gakuseki = decbin($gakuseki);
print "学籍番号の2進数は
${gakuseki}です。
";
$gakuseki = "0000000000000$gakuseki$gakuseki$gakuseki";
print "平文は
${gakuseki}です。
";



//初期転置
$gakuseki = shokitenchi($gakuseki);

//鍵PC1
$kagi = kagiPC1($kagi);

//鍵分割
$kagi1 = substr($kagi , 0 , 28);
$kagi2 = substr($kagi , 28 ,28 );

//平文分割
$gakuseki1= substr($gakuseki , 0 , 32);
$gakuseki2= substr($gakuseki , 32 , 32);


for($i=1;$i<=16;$i++){

print "鍵は左が
${kagi1}で、右が
${kagi2}です。
";

//鍵左シフト
$kagi1 = leftshift($kagi1 , $i);
$kagi2 = leftshift($kagi2 , $i);

//鍵結合
$kagi = "$kagi1$kagi2";
//鍵PC2
$kagi = kagiPC2($kagi);

//関数F
$fans = kansuf( $gakuseki2 , $kagi );

$gakuseki1 = exor( $gakuseki1 , $fans , 32 );

print "第${i}段目は
${gakuseki1}と
${gakuseki2}です。
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
";

$tmp = $gakuseki1;
$gakuseki1 = $gakuseki2;
$gakuseki2 = $tmp;



}


$tmp = $gakuseki1;
$gakuseki1 = $gakuseki2;
$gakuseki2 = $tmp;


$gakuseki = $gakuseki1.$gakuseki2;

$gakuseki = saishutenchi($gakuseki);


print "暗号文は
${gakuseki}です。
";
print "---------------------------------------------------------
";


//初期転置関数------------------------------------------------------------------------------------------------------------
function shokitenchi($gakuseki){

$gakuseki = "0$gakuseki";

$gakuseki = substr($gakuseki , 58 , 1 ).substr($gakuseki , 50 , 1 ).substr($gakuseki , 42 , 1 ).substr($gakuseki , 34 , 1 ).substr($gakuseki , 26 , 1 ).substr($gakuseki , 18 , 1 ).substr($gakuseki , 10 , 1 ).substr($gakuseki , 2 , 1 ).substr($gakuseki , 60 , 1 ).substr($gakuseki , 52 , 1 ).substr($gakuseki , 44 , 1 ).substr($gakuseki , 36 , 1 ).substr($gakuseki , 28 , 1 ).substr($gakuseki , 20 , 1 ).substr($gakuseki , 12 , 1 ).substr($gakuseki ,4 , 1 ).substr($gakuseki , 62 , 1 ).substr($gakuseki , 54 , 1 ).substr($gakuseki , 46 , 1 ).substr($gakuseki , 38 , 1 ).substr($gakuseki , 30 , 1 ).substr($gakuseki , 22 , 1 ).substr($gakuseki , 14 , 1 ).substr($gakuseki , 6 , 1 ).substr($gakuseki , 64 , 1 ).substr($gakuseki , 56 , 1 ).substr($gakuseki ,48 , 1 ).substr($gakuseki , 40 , 1 ).substr($gakuseki , 32 , 1 ).substr($gakuseki , 24 , 1 ).substr($gakuseki , 16 , 1 ).substr($gakuseki , 8 , 1 ).substr($gakuseki ,57 , 1 ).substr($gakuseki , 49 , 1 ).substr($gakuseki , 41 , 1 ).substr($gakuseki , 33 , 1 ).substr($gakuseki , 25 , 1 ).substr($gakuseki , 17 , 1 ).substr($gakuseki , 9 , 1 ).substr($gakuseki , 1 , 1 ).substr($gakuseki , 59 , 1 ).substr($gakuseki , 51 , 1 ).substr($gakuseki , 43 , 1 ).substr($gakuseki , 35 , 1 ).substr($gakuseki , 27 , 1 ).substr($gakuseki , 19 , 1 ).substr($gakuseki , 11 , 1 ).substr($gakuseki , 3 , 1 ).substr($gakuseki , 61 , 1 ).substr($gakuseki , 53 , 1 ).substr($gakuseki , 45 , 1 ).substr($gakuseki , 37 , 1 ).substr($gakuseki , 29 , 1 ).substr($gakuseki , 21 , 1 ).substr($gakuseki , 13 , 1 ).substr($gakuseki , 5 , 1 ).substr($gakuseki , 63 , 1 ).substr($gakuseki , 55 , 1 ).substr($gakuseki , 47 , 1 ).substr($gakuseki , 39 , 1 ).substr($gakuseki , 31 , 1 ).substr($gakuseki , 23 , 1 ).substr($gakuseki , 15 , 1 ).substr($gakuseki , 7 , 1 );
print "初期転置の結果は
${gakuseki}です。
";
return $gakuseki;
}



//鍵PC1関数---------------------------------------------------------------------------------------------------------------
function kagiPC1($kagi){

$kagi = "0$kagi";

$kagi = substr($kagi,57 ,1).substr($kagi,49 ,1).substr($kagi,41 ,1).substr($kagi,33 ,1).substr($kagi,25 ,1).substr($kagi,17 ,1).substr($kagi,9 ,1).substr($kagi,1 ,1).substr($kagi,58 ,1).substr($kagi,50 ,1).substr($kagi,42 ,1).substr($kagi,34 ,1).substr($kagi,26 ,1).substr($kagi,18 ,1).substr($kagi,10 ,1).substr($kagi,2 ,1).substr($kagi,59 ,1).substr($kagi,51 ,1).substr($kagi,43 ,1).substr($kagi,35 ,1).substr($kagi,27 ,1).substr($kagi,19 ,1).substr($kagi,11 ,1).substr($kagi,3 ,1).substr($kagi,60 ,1).substr($kagi,52 ,1).substr($kagi,44 ,1).substr($kagi,36 ,1).substr($kagi,63 ,1).substr($kagi,55 ,1).substr($kagi,47 ,1).substr($kagi,39 ,1).substr($kagi,31 ,1).substr($kagi,23 ,1).substr($kagi,15 ,1).substr($kagi,7 ,1).substr($kagi,62 ,1).substr($kagi,54 ,1).substr($kagi,46 ,1).substr($kagi,38 ,1).substr($kagi,30 ,1).substr($kagi,22 ,1).substr($kagi,14 ,1).substr($kagi,6 ,1).substr($kagi,61 ,1).substr($kagi,53 ,1).substr($kagi,45 ,1).substr($kagi,37 ,1).substr($kagi,29 ,1).substr($kagi,21 ,1).substr($kagi,13 ,1).substr($kagi,5 ,1).substr($kagi,28 ,1).substr($kagi,20 ,1).substr($kagi,12 ,1).substr($kagi,4 ,1);
print "PC1の結果は
${kagi}です。
";
return $kagi;
}




//鍵PC2関数--------------------------------------------------------------------------------------------------------------
function kagiPC2($kagi){

$kagi ="0$kagi";
$kagi = substr($kagi,14 ,1).substr($kagi,17 ,1).substr($kagi,11 ,1).substr($kagi,24 ,1).substr($kagi,1 ,1).substr($kagi, 5 ,1).substr($kagi,3 ,1).substr($kagi,28 ,1).substr($kagi,15 ,1).substr($kagi,6 ,1).substr($kagi,21 ,1).substr($kagi,10 ,1).substr($kagi,23 ,1).substr($kagi,19 ,1).substr($kagi,12 ,1).substr($kagi,4 ,1).substr($kagi,26 ,1).substr($kagi,8 ,1).substr($kagi,16 ,1).substr($kagi,7 ,1).substr($kagi,27 ,1).substr($kagi,20 ,1).substr($kagi,13 ,1).substr($kagi,2 ,1).substr($kagi,41 ,1).substr($kagi,52 ,1).substr($kagi,31 ,1).substr($kagi,37 ,1).substr($kagi,47 ,1).substr($kagi,55 ,1).substr($kagi, 30,1).substr($kagi,40 ,1).substr($kagi,51 ,1).substr($kagi,45 ,1).substr($kagi,33 ,1).substr($kagi,48 ,1).substr($kagi,44 ,1).substr($kagi, 49,1).substr($kagi,39 ,1).substr($kagi,56 ,1).substr($kagi,34 ,1).substr($kagi,53 ,1).substr($kagi,46 ,1).substr($kagi, 42,1).substr($kagi,50 ,1).substr($kagi,36 ,1).substr($kagi,29 ,1).substr($kagi,32 ,1);
print "PC2の結果は
${kagi}です。
";

return $kagi;
}




//鍵左シフト関数1:鍵、2:回数------------------------------------------------------------------------------------------------
function leftshift($kagi , $i){
$shiftnum[1]=1;
$shiftnum[2]=1;
$shiftnum[3]=2;
$shiftnum[4]=2;
$shiftnum[5]=2;
$shiftnum[6]=2;
$shiftnum[7]=2;
$shiftnum[8]=2;
$shiftnum[9]=1;
$shiftnum[10]=2;
$shiftnum[11]=2;
$shiftnum[12]=2;
$shiftnum[13]=2;
$shiftnum[14]=2;
$shiftnum[15]=2;
$shiftnum[16]=1;

if($shiftnum[$i]==1){
$kagi = substr($kagi , 1).substr($kagi , 0 , 1);
}else{
$kagi = substr($kagi , 2).substr($kagi , 0 ,2);
}

print "左シフトして
${kagi}にしました
";

return $kagi;
}




//関数F関数------------------------------------------------------------------------------
function kansuf( $gakuseki2 , $kagi){
//拡大転置E
print "拡大転置Eの前は
${gakuseki2}です。
";

$gakuseki2 = kakudaiE($gakuseki2);

for($j=0;$j<8;$j++){
$tmpGS2[$j] = substr($gakuseki2 , $j*6 , 6 );
$tmpKG = substr($kagi , $j*6 , 6 );
$tmpGS2[$j] = exor($tmpGS2[$j] , $tmpKG , 6);
$tmpGS2[$j] = sbox($tmpGS2[$j] , $j );
$jj=$j+1;
print "SBOX${jj}の結果は
${tmpGS2[$j]}です。
";
}

$gakuseki2 =$tmpGS2[0].$tmpGS2[1].$tmpGS2[2].$tmpGS2[3].$tmpGS2[4].$tmpGS2[5].$tmpGS2[6].$tmpGS2[7];


$gakuseki2 = tenchiP($gakuseki2);

print "関数Fの結果は
${gakuseki2}です。
";
return $gakuseki2;
}

//拡大転置E関数------------------------------------------------------------------------------
function kakudaiE($gakuseki2){

$gakuseki2 ="0$gakuseki2";

$gakuseki2 = substr($gakuseki2 , 32 , 1).substr($gakuseki2 , 1 , 1).substr($gakuseki2 , 2 , 1).substr($gakuseki2 , 3 , 1).substr($gakuseki2 , 4 , 1).substr($gakuseki2 , 5 , 1).substr($gakuseki2 , 4 , 1).substr($gakuseki2 , 5 , 1).substr($gakuseki2 ,6 , 1).substr($gakuseki2 , 7 , 1).substr($gakuseki2 , 8 , 1).substr($gakuseki2 , 9 , 1).substr($gakuseki2 , 8 , 1).substr($gakuseki2 , 9 , 1).substr($gakuseki2 , 10 , 1).substr($gakuseki2 , 11 , 1).substr($gakuseki2 , 12 , 1).substr($gakuseki2 ,13 , 1).substr($gakuseki2 , 12 , 1).substr($gakuseki2 ,13 , 1).substr($gakuseki2 , 14 , 1).substr($gakuseki2 , 15 , 1).substr($gakuseki2 , 16 , 1).substr($gakuseki2 , 17 , 1).substr($gakuseki2 , 16 , 1).substr($gakuseki2 , 17 , 1).substr($gakuseki2 , 18 , 1).substr($gakuseki2 , 19 , 1).substr($gakuseki2 , 20 , 1).substr($gakuseki2 , 21 , 1).substr($gakuseki2 , 20 , 1).substr($gakuseki2 , 21 , 1).substr($gakuseki2 ,22 , 1).substr($gakuseki2 ,23 , 1).substr($gakuseki2 , 24 , 1).substr($gakuseki2 , 25 , 1).substr($gakuseki2 ,24 , 1).substr($gakuseki2 , 25 , 1).substr($gakuseki2 , 26 , 1).substr($gakuseki2 ,27 , 1).substr($gakuseki2 , 28 , 1).substr($gakuseki2 ,29 , 1).substr($gakuseki2 ,28 , 1).substr($gakuseki2 , 29 , 1).substr($gakuseki2 , 30 , 1).substr($gakuseki2 , 31 , 1).substr($gakuseki2 , 32 , 1).substr($gakuseki2 , 1 , 1);
print "拡大転置Eの結果は
${gakuseki2}です。
";
return $gakuseki2;

}

//SBOX関数------------------------------------------------------------------------------
function sbox( $tmpGS2 , $j ){
$j = $j+1;

$soto = substr($tmpGS2 , 0 ,1).substr($tmpGS2 , 5 ,1);
$naka = substr($tmpGS2 , 1 ,4);

$soto = bindec($soto);
$naka = bindec($naka);


//sboxの中身[$j][行][列]
$sb[1][0][0] = 14 ;
$sb[1][0][1] = 4 ;
$sb[1][0][2] = 13 ;
$sb[1][0][3] = 1 ;
$sb[1][0][4] = 2 ;
$sb[1][0][5] = 15 ;
$sb[1][0][6] = 11 ;
$sb[1][0][7] = 8 ;
$sb[1][0][8] = 3 ;
$sb[1][0][9] = 10 ;
$sb[1][0][10] =6 ;
$sb[1][0][11] =12 ;
$sb[1][0][12] =5 ;
$sb[1][0][13] =9 ;
$sb[1][0][14] =0 ;
$sb[1][0][15] =7 ;

$sb[1][1][0] = 0 ;
$sb[1][1][1] = 15 ;
$sb[1][1][2] = 7 ;
$sb[1][1][3] = 4 ;
$sb[1][1][4] = 14 ;
$sb[1][1][5] = 2 ;
$sb[1][1][6] = 13 ;
$sb[1][1][7] = 1 ;
$sb[1][1][8] = 10 ;
$sb[1][1][9] = 6 ;
$sb[1][1][10] =12 ;
$sb[1][1][11] =11 ;
$sb[1][1][12] =9 ;
$sb[1][1][13] =5 ;
$sb[1][1][14] =3 ;
$sb[1][1][15] =8 ;

$sb[1][2][0] = 4 ;
$sb[1][2][1] = 1 ;
$sb[1][2][2] = 14 ;
$sb[1][2][3] = 8 ;
$sb[1][2][4] = 13 ;
$sb[1][2][5] = 6 ;
$sb[1][2][6] = 2 ;
$sb[1][2][7] = 11 ;
$sb[1][2][8] = 15 ;
$sb[1][2][9] = 12 ;
$sb[1][2][10] =9 ;
$sb[1][2][11] =7 ;
$sb[1][2][12] =3 ;
$sb[1][2][13] =10 ;
$sb[1][2][14] =5 ;
$sb[1][2][15] =0 ;

$sb[1][3][0] = 15 ;
$sb[1][3][1] = 12 ;
$sb[1][3][2] = 8 ;
$sb[1][3][3] = 2 ;
$sb[1][3][4] = 4 ;
$sb[1][3][5] = 9 ;
$sb[1][3][6] = 1 ;
$sb[1][3][7] = 7 ;
$sb[1][3][8] = 5 ;
$sb[1][3][9] = 11 ;
$sb[1][3][10] =3 ;
$sb[1][3][11] =14 ;
$sb[1][3][12] =10 ;
$sb[1][3][13] =0 ;
$sb[1][3][14] =6 ;
$sb[1][3][15] =13 ;


$sb[2][0][0] = 15 ;
$sb[2][0][1] = 1 ;
$sb[2][0][2] = 8 ;
$sb[2][0][3] = 14 ;
$sb[2][0][4] = 6 ;
$sb[2][0][5] = 11 ;
$sb[2][0][6] = 3 ;
$sb[2][0][7] = 4 ;
$sb[2][0][8] = 9 ;
$sb[2][0][9] = 7 ;
$sb[2][0][10] = 2 ;
$sb[2][0][11] = 13 ;
$sb[2][0][12] = 12 ;
$sb[2][0][13] = 0 ;
$sb[2][0][14] = 5 ;
$sb[2][0][15] = 10 ;

$sb[2][1][0] = 3;
$sb[2][1][1] = 13;
$sb[2][1][2] = 4;
$sb[2][1][3] = 7;
$sb[2][1][4] = 15;
$sb[2][1][5] = 2;
$sb[2][1][6] = 8;
$sb[2][1][7] = 14;
$sb[2][1][8] = 12;
$sb[2][1][9] = 0;
$sb[2][1][10] =1 ;
$sb[2][1][11] =10 ;
$sb[2][1][12] =6 ;
$sb[2][1][13] =9 ;
$sb[2][1][14] =11 ;
$sb[2][1][15] =5 ;

$sb[2][2][0] = 0;
$sb[2][2][1] = 14;
$sb[2][2][2] = 7;
$sb[2][2][3] = 11;
$sb[2][2][4] = 10;
$sb[2][2][5] = 4;
$sb[2][2][6] = 13;
$sb[2][2][7] = 1;
$sb[2][2][8] = 5;
$sb[2][2][9] = 8;
$sb[2][2][10] =12 ;
$sb[2][2][11] =6 ;
$sb[2][2][12] =9 ;
$sb[2][2][13] =3 ;
$sb[2][2][14] =2 ;
$sb[2][2][15] =15 ;

$sb[2][3][0] = 13;
$sb[2][3][1] = 8;
$sb[2][3][2] = 10;
$sb[2][3][3] = 1;
$sb[2][3][4] = 3;
$sb[2][3][5] = 15;
$sb[2][3][6] = 4;
$sb[2][3][7] = 2;
$sb[2][3][8] = 11;
$sb[2][3][9] = 6;
$sb[2][3][10] =7 ;
$sb[2][3][11] =12 ;
$sb[2][3][12] =0 ;
$sb[2][3][13] =5 ;
$sb[2][3][14] =14 ;
$sb[2][3][15] =9 ;


$sb[3][0][0] = 10 ;
$sb[3][0][1] = 0 ;
$sb[3][0][2] = 9 ;
$sb[3][0][3] = 14 ;
$sb[3][0][4] = 6 ;
$sb[3][0][5] = 3 ;
$sb[3][0][6] = 15 ;
$sb[3][0][7] = 5 ;
$sb[3][0][8] = 1 ;
$sb[3][0][9] = 13 ;
$sb[3][0][10] =12 ;
$sb[3][0][11] =7 ;
$sb[3][0][12] =11 ;
$sb[3][0][13] =4 ;
$sb[3][0][14] =2 ;
$sb[3][0][15] =8 ;

$sb[3][1][0] = 13 ;
$sb[3][1][1] = 7 ;
$sb[3][1][2] = 0 ;
$sb[3][1][3] = 9 ;
$sb[3][1][4] = 3 ;
$sb[3][1][5] = 4 ;
$sb[3][1][6] = 6 ;
$sb[3][1][7] = 10 ;
$sb[3][1][8] = 2 ;
$sb[3][1][9] = 8 ;
$sb[3][1][10] =5 ;
$sb[3][1][11] =14 ;
$sb[3][1][12] =12 ;
$sb[3][1][13] =11 ;
$sb[3][1][14] =15 ;
$sb[3][1][15] =1 ;

$sb[3][2][0] = 13 ;
$sb[3][2][1] = 6 ;
$sb[3][2][2] = 4 ;
$sb[3][2][3] = 9 ;
$sb[3][2][4] = 8 ;
$sb[3][2][5] = 15 ;
$sb[3][2][6] = 3 ;
$sb[3][2][7] = 0 ;
$sb[3][2][8] = 11 ;
$sb[3][2][9] = 1 ;
$sb[3][2][10] =2 ;
$sb[3][2][11] =12 ;
$sb[3][2][12] =5 ;
$sb[3][2][13] =10 ;
$sb[3][2][14] =14 ;
$sb[3][2][15] =7 ;

$sb[3][3][0] = 1 ;
$sb[3][3][1] = 10 ;
$sb[3][3][2] = 13 ;
$sb[3][3][3] = 0 ;
$sb[3][3][4] = 6 ;
$sb[3][3][5] = 9 ;
$sb[3][3][6] = 8 ;
$sb[3][3][7] = 7 ;
$sb[3][3][8] = 4 ;
$sb[3][3][9] = 15 ;
$sb[3][3][10] =14 ;
$sb[3][3][11] =3 ;
$sb[3][3][12] =11 ;
$sb[3][3][13] =5 ;
$sb[3][3][14] =2 ;
$sb[3][3][15] =12 ;


$sb[4][0][0] = 7 ;
$sb[4][0][1] = 13 ;
$sb[4][0][2] = 14 ;
$sb[4][0][3] = 3 ;
$sb[4][0][4] = 0 ;
$sb[4][0][5] = 6 ;
$sb[4][0][6] = 9 ;
$sb[4][0][7] = 10 ;
$sb[4][0][8] = 1 ;
$sb[4][0][9] = 2 ;
$sb[4][0][10] =8 ;
$sb[4][0][11] =5 ;
$sb[4][0][12] =11 ;
$sb[4][0][13] =12 ;
$sb[4][0][14] =4 ;
$sb[4][0][15] =15 ;

$sb[4][1][0] = 13 ;
$sb[4][1][1] = 8 ;
$sb[4][1][2] = 11 ;
$sb[4][1][3] = 5 ;
$sb[4][1][4] = 6 ;
$sb[4][1][5] = 15 ;
$sb[4][1][6] = 0 ;
$sb[4][1][7] = 3 ;
$sb[4][1][8] = 4 ;
$sb[4][1][9] = 7 ;
$sb[4][1][10] =2 ;
$sb[4][1][11] =12 ;
$sb[4][1][12] =1 ;
$sb[4][1][13] =10 ;
$sb[4][1][14] =14 ;
$sb[4][1][15] =9 ;

$sb[4][2][0] = 10 ;
$sb[4][2][1] = 6 ;
$sb[4][2][2] = 9 ;
$sb[4][2][3] = 0 ;
$sb[4][2][4] = 12 ;
$sb[4][2][5] = 11 ;
$sb[4][2][6] = 7 ;
$sb[4][2][7] = 13 ;
$sb[4][2][8] = 15 ;
$sb[4][2][9] = 1 ;
$sb[4][2][10] =3 ;
$sb[4][2][11] =14 ;
$sb[4][2][12] =5 ;
$sb[4][2][13] =2 ;
$sb[4][2][14] =8 ;
$sb[4][2][15] =4 ;

$sb[4][3][0] = 3 ;
$sb[4][3][1] = 15 ;
$sb[4][3][2] = 0 ;
$sb[4][3][3] = 6 ;
$sb[4][3][4] = 10 ;
$sb[4][3][5] = 1 ;
$sb[4][3][6] = 13 ;
$sb[4][3][7] = 8 ;
$sb[4][3][8] = 9 ;
$sb[4][3][9] = 4 ;
$sb[4][3][10] =5 ;
$sb[4][3][11] =11 ;
$sb[4][3][12] =12 ;
$sb[4][3][13] =7 ;
$sb[4][3][14] =2 ;
$sb[4][3][15] =14 ;


$sb[5][0][0] = 2 ;
$sb[5][0][1] = 12 ;
$sb[5][0][2] = 4 ;
$sb[5][0][3] = 1 ;
$sb[5][0][4] = 7 ;
$sb[5][0][5] = 10 ;
$sb[5][0][6] = 11 ;
$sb[5][0][7] = 6 ;
$sb[5][0][8] = 8 ;
$sb[5][0][9] = 5 ;
$sb[5][0][10] =3 ;
$sb[5][0][11] =15 ;
$sb[5][0][12] =13 ;
$sb[5][0][13] =0 ;
$sb[5][0][14] =14 ;
$sb[5][0][15] =9 ;

$sb[5][1][0] = 14 ;
$sb[5][1][1] = 11 ;
$sb[5][1][2] = 2 ;
$sb[5][1][3] = 12 ;
$sb[5][1][4] = 4 ;
$sb[5][1][5] = 7 ;
$sb[5][1][6] = 13 ;
$sb[5][1][7] = 1 ;
$sb[5][1][8] = 5 ;
$sb[5][1][9] = 0 ;
$sb[5][1][10] =15 ;
$sb[5][1][11] =10 ;
$sb[5][1][12] =3 ;
$sb[5][1][13] =9 ;
$sb[5][1][14] =8 ;
$sb[5][1][15] =6 ;

$sb[5][2][0] = 4 ;
$sb[5][2][1] = 2 ;
$sb[5][2][2] = 1 ;
$sb[5][2][3] = 11 ;
$sb[5][2][4] = 10 ;
$sb[5][2][5] = 13 ;
$sb[5][2][6] = 7 ;
$sb[5][2][7] = 8 ;
$sb[5][2][8] = 15 ;
$sb[5][2][9] = 9 ;
$sb[5][2][10] =12 ;
$sb[5][2][11] =5 ;
$sb[5][2][12] =6 ;
$sb[5][2][13] =3 ;
$sb[5][2][14] =0 ;
$sb[5][2][15] =14 ;

$sb[5][3][0] = 11 ;
$sb[5][3][1] = 8 ;
$sb[5][3][2] = 12 ;
$sb[5][3][3] = 7 ;
$sb[5][3][4] = 1 ;
$sb[5][3][5] = 14 ;
$sb[5][3][6] = 2 ;
$sb[5][3][7] = 13 ;
$sb[5][3][8] = 6 ;
$sb[5][3][9] = 15 ;
$sb[5][3][10] =0 ;
$sb[5][3][11] =9 ;
$sb[5][3][12] =10 ;
$sb[5][3][13] =4 ;
$sb[5][3][14] =5 ;
$sb[5][3][15] =3 ;


$sb[6][0][0] = 12 ;
$sb[6][0][1] = 1 ;
$sb[6][0][2] = 10 ;
$sb[6][0][3] = 15 ;
$sb[6][0][4] = 9 ;
$sb[6][0][5] = 2 ;
$sb[6][0][6] = 6 ;
$sb[6][0][7] = 8 ;
$sb[6][0][8] = 0 ;
$sb[6][0][9] = 13 ;
$sb[6][0][10] =3 ;
$sb[6][0][11] =4 ;
$sb[6][0][12] =14 ;
$sb[6][0][13] =7 ;
$sb[6][0][14] =5 ;
$sb[6][0][15] =11 ;

$sb[6][1][0] = 10 ;
$sb[6][1][1] = 15 ;
$sb[6][1][2] = 4 ;
$sb[6][1][3] = 2 ;
$sb[6][1][4] = 7 ;
$sb[6][1][5] = 12 ;
$sb[6][1][6] = 9 ;
$sb[6][1][7] = 5 ;
$sb[6][1][8] = 6 ;
$sb[6][1][9] = 1 ;
$sb[6][1][10] =13 ;
$sb[6][1][11] =14 ;
$sb[6][1][12] =0 ;
$sb[6][1][13] =11 ;
$sb[6][1][14] =3 ;
$sb[6][1][15] =8 ;

$sb[6][2][0] = 9 ;
$sb[6][2][1] = 14 ;
$sb[6][2][2] = 15 ;
$sb[6][2][3] = 5 ;
$sb[6][2][4] = 2 ;
$sb[6][2][5] = 8 ;
$sb[6][2][6] = 12 ;
$sb[6][2][7] = 3 ;
$sb[6][2][8] = 7 ;
$sb[6][2][9] = 0 ;
$sb[6][2][10] =4 ;
$sb[6][2][11] =10 ;
$sb[6][2][12] =1 ;
$sb[6][2][13] =13 ;
$sb[6][2][14] =11 ;
$sb[6][2][15] =6 ;

$sb[6][3][0] = 4 ;
$sb[6][3][1] = 3 ;
$sb[6][3][2] = 2 ;
$sb[6][3][3] = 12 ;
$sb[6][3][4] = 9 ;
$sb[6][3][5] = 5 ;
$sb[6][3][6] = 15 ;
$sb[6][3][7] = 10 ;
$sb[6][3][8] = 11 ;
$sb[6][3][9] = 14 ;
$sb[6][3][10] =1 ;
$sb[6][3][11] =7 ;
$sb[6][3][12] =6 ;
$sb[6][3][13] =0 ;
$sb[6][3][14] =8 ;
$sb[6][3][15] =13 ;


$sb[7][0][0] = 4 ;
$sb[7][0][1] = 11 ;
$sb[7][0][2] = 2 ;
$sb[7][0][3] = 14 ;
$sb[7][0][4] = 15 ;
$sb[7][0][5] = 0 ;
$sb[7][0][6] = 8 ;
$sb[7][0][7] = 13 ;
$sb[7][0][8] = 3 ;
$sb[7][0][9] = 12 ;
$sb[7][0][10] =9 ;
$sb[7][0][11] =7 ;
$sb[7][0][12] =5 ;
$sb[7][0][13] =10 ;
$sb[7][0][14] =6 ;
$sb[7][0][15] =1 ;

$sb[7][1][0] = 13 ;
$sb[7][1][1] = 0 ;
$sb[7][1][2] = 11 ;
$sb[7][1][3] = 7 ;
$sb[7][1][4] = 4 ;
$sb[7][1][5] = 9 ;
$sb[7][1][6] = 1 ;
$sb[7][1][7] = 10 ;
$sb[7][1][8] = 14 ;
$sb[7][1][9] = 3;
$sb[7][1][10] = 5 ;
$sb[7][1][11] = 12 ;
$sb[7][1][12] = 2 ;
$sb[7][1][13] = 15 ;
$sb[7][1][14] = 8 ;
$sb[7][1][15] = 6 ;

$sb[7][2][0] = 1 ;
$sb[7][2][1] = 4 ;
$sb[7][2][2] = 11 ;
$sb[7][2][3] = 13 ;
$sb[7][2][4] = 12 ;
$sb[7][2][5] = 3 ;
$sb[7][2][6] = 7 ;
$sb[7][2][7] = 14 ;
$sb[7][2][8] = 10 ;
$sb[7][2][9] = 15 ;
$sb[7][2][10] =6 ;
$sb[7][2][11] =8 ;
$sb[7][2][12] =0 ;
$sb[7][2][13] =5 ;
$sb[7][2][14] =9 ;
$sb[7][2][15] =2 ;

$sb[7][3][0] = 6 ;
$sb[7][3][1] = 11 ;
$sb[7][3][2] = 13 ;
$sb[7][3][3] = 8 ;
$sb[7][3][4] = 1 ;
$sb[7][3][5] = 4 ;
$sb[7][3][6] = 10 ;
$sb[7][3][7] = 7 ;
$sb[7][3][8] = 9 ;
$sb[7][3][9] = 5 ;
$sb[7][3][10] =0 ;
$sb[7][3][11] =15 ;
$sb[7][3][12] =14 ;
$sb[7][3][13] =2 ;
$sb[7][3][14] =3 ;
$sb[7][3][15] =12 ;


$sb[8][0][0] = 13 ;
$sb[8][0][1] = 2 ;
$sb[8][0][2] = 8 ;
$sb[8][0][3] = 4 ;
$sb[8][0][4] = 6 ;
$sb[8][0][5] = 15 ;
$sb[8][0][6] = 11 ;
$sb[8][0][7] = 1 ;
$sb[8][0][8] = 10 ;
$sb[8][0][9] = 9 ;
$sb[8][0][10] =3 ;
$sb[8][0][11] =14 ;
$sb[8][0][12] =5 ;
$sb[8][0][13] =0 ;
$sb[8][0][14] =12 ;
$sb[8][0][15] =7 ;

$sb[8][1][0] = 1 ;
$sb[8][1][1] = 15 ;
$sb[8][1][2] = 13 ;
$sb[8][1][3] = 8 ;
$sb[8][1][4] = 10 ;
$sb[8][1][5] = 3 ;
$sb[8][1][6] = 7 ;
$sb[8][1][7] = 4 ;
$sb[8][1][8] = 12 ;
$sb[8][1][9] = 5 ;
$sb[8][1][10] =6 ;
$sb[8][1][11] =11 ;
$sb[8][1][12] =0 ;
$sb[8][1][13] =14 ;
$sb[8][1][14] =9 ;
$sb[8][1][15] =2 ;

$sb[8][2][0] = 7 ;
$sb[8][2][1] = 11 ;
$sb[8][2][2] = 4 ;
$sb[8][2][3] = 1 ;
$sb[8][2][4] = 9 ;
$sb[8][2][5] = 12 ;
$sb[8][2][6] = 14 ;
$sb[8][2][7] = 2 ;
$sb[8][2][8] = 0 ;
$sb[8][2][9] = 6 ;
$sb[8][2][10] =10 ;
$sb[8][2][11] =13 ;
$sb[8][2][12] =15 ;
$sb[8][2][13] =3 ;
$sb[8][2][14] =5 ;
$sb[8][2][15] =8 ;

$sb[8][3][0] = 2 ;
$sb[8][3][1] = 1 ;
$sb[8][3][2] = 14 ;
$sb[8][3][3] = 7 ;
$sb[8][3][4] = 4 ;
$sb[8][3][5] = 10 ;
$sb[8][3][6] = 8 ;
$sb[8][3][7] = 13 ;
$sb[8][3][8] = 15 ;
$sb[8][3][9] = 12 ;
$sb[8][3][10] =9 ;
$sb[8][3][11] =0 ;
$sb[8][3][12] =3 ;
$sb[8][3][13] =5 ;
$sb[8][3][14] =6 ;
$sb[8][3][15] =11 ;


$tmpGS2 = $sb[$j][$soto][$naka];

$tmpGS2 = decbin($tmpGS2);

if(strlen($tmpGS2)==0){
$tmpGS2 = "0000";
}else if(strlen($tmpGS2)==1){
$tmpGS2 = "000${tmpGS2}";
}else if(strlen($tmpGS2)==2){
$tmpGS2 = "00${tmpGS2}";
}else if(strlen($tmpGS2)==3){
$tmpGS2 = "0${tmpGS2}";
}

return $tmpGS2;

}

//転置P------------------------------------------------------------------------------
function tenchiP($gakuseki2){

print "転置Pの前は
${gakuseki2}です。
";
$gakuseki2 ="0$gakuseki2";
$gakuseki2 = substr( $gakuseki2 , 16 , 1).substr( $gakuseki2 , 7 , 1).substr( $gakuseki2 , 20 , 1).substr( $gakuseki2 , 21 , 1).substr( $gakuseki2 , 29 , 1).substr( $gakuseki2 , 12 , 1).substr( $gakuseki2 , 28 , 1).substr( $gakuseki2 , 17 , 1).substr( $gakuseki2 , 1 , 1).substr( $gakuseki2 , 15 , 1).substr( $gakuseki2 , 23 , 1).substr( $gakuseki2 , 26 , 1).substr( $gakuseki2 , 5 , 1).substr( $gakuseki2 ,18 , 1).substr( $gakuseki2 , 31 , 1).substr( $gakuseki2 , 10 , 1).substr( $gakuseki2 , 2 , 1).substr( $gakuseki2 , 8 , 1).substr( $gakuseki2 , 24 , 1).substr( $gakuseki2 , 14 , 1).substr( $gakuseki2 , 32 , 1).substr( $gakuseki2 , 27 , 1).substr( $gakuseki2 , 3 , 1).substr( $gakuseki2 , 9 , 1).substr( $gakuseki2 , 19 , 1).substr( $gakuseki2 ,13 , 1).substr( $gakuseki2 , 30 , 1).substr( $gakuseki2 , 6 , 1).substr( $gakuseki2 , 22 , 1).substr( $gakuseki2 , 11 , 1).substr( $gakuseki2 , 4 , 1).substr( $gakuseki2 , 25 , 1);
return $gakuseki2;

}

//排他的論理和関数------------------------------------------------------------------------------
function exor( $a , $b , $z ){
for($k=0;$k<$z;$k++){

if(substr($a,$k,1) == substr($b,$k,1)){
$ans[$k] = 0;
}else{
$ans[$k] = 1;
}

}

$anser = $ans[0];

for($n=1;$n<$z;$n++){

$anser = $anser.$ans[$n];

}

return $anser;

}

//最終転置------------------------------------------------------------------------------
function saishutenchi($gakuseki){

$gakuseki ="0$gakuseki";
$gakuseki = substr($gakuseki , 40 , 1 ).substr($gakuseki , 8 , 1 ).substr($gakuseki , 48 , 1 ).substr($gakuseki , 16 , 1 ).substr($gakuseki , 56 , 1 ).substr($gakuseki , 24 , 1 ).substr($gakuseki , 64 , 1 ).substr($gakuseki , 32 , 1 ).substr($gakuseki , 39 , 1 ).substr($gakuseki , 7 , 1 ).substr($gakuseki , 47 , 1 ).substr($gakuseki , 15 , 1 ).substr($gakuseki , 55 , 1 ).substr($gakuseki , 23 , 1 ).substr($gakuseki , 63 , 1 ).substr($gakuseki , 31 , 1 ).substr($gakuseki , 38 , 1 ).substr($gakuseki , 6 , 1 ).substr($gakuseki , 46 , 1 ).substr($gakuseki , 14 , 1 ).substr($gakuseki , 54 , 1 ).substr($gakuseki , 22 , 1 ).substr($gakuseki , 62 , 1 ).substr($gakuseki , 30 , 1 ).substr($gakuseki , 37 , 1 ).substr($gakuseki , 5 , 1 ).substr($gakuseki , 45 , 1 ).substr($gakuseki , 13 , 1 ).substr($gakuseki , 53 , 1 ).substr($gakuseki , 21 , 1 ).substr($gakuseki , 61 , 1 ).substr($gakuseki , 29 , 1 ).substr($gakuseki , 36 , 1 ).substr($gakuseki , 4 , 1 ).substr($gakuseki , 44 , 1 ).substr($gakuseki , 12 , 1 ).substr($gakuseki , 52 , 1 ).substr($gakuseki , 20 , 1 ).substr($gakuseki , 60 , 1 ).substr($gakuseki , 28 , 1 ).substr($gakuseki , 35 , 1 ).substr($gakuseki , 3 , 1 ).substr($gakuseki , 43 , 1 ).substr($gakuseki , 11 , 1 ).substr($gakuseki , 51 , 1 ).substr($gakuseki , 19 , 1 ).substr($gakuseki ,59 , 1 ).substr($gakuseki , 27 , 1 ).substr($gakuseki , 34 , 1 ).substr($gakuseki , 2 , 1 ).substr($gakuseki , 42 , 1 ).substr($gakuseki , 10 , 1 ).substr($gakuseki , 50 , 1 ).substr($gakuseki , 18 , 1 ).substr($gakuseki , 58 , 1 ).substr($gakuseki , 26 , 1 ).substr($gakuseki , 33 , 1 ).substr($gakuseki , 1 , 1 ).substr($gakuseki , 41 , 1 ).substr($gakuseki , 9 , 1 ).substr($gakuseki , 49 , 1 ).substr($gakuseki , 17 , 1 ).substr($gakuseki , 57 , 1 ).substr($gakuseki , 25 , 1 );
return $gakuseki;

}




?>
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。

スポンサーサイト

コメント

コメントの投稿















管理者にだけ表示を許可する

トラックバック

この記事のトラックバックURL
http://kunitachi2.blog21.fc2.com/tb.php/1295-6933b191