2017-01-16 125 views
1

我想我自己的加密,但持续发生PHP开关:加密和解密

输入:abcdefghijklmnopqrstuvwxyz

输出:?b??efghi?????o?qrstuvwxy?

这里是我的代码

<?php 
/** 
* Created by PhpStorm. 
* User: Stan 
* Date: 13-1-2017 
* Time: 14:33 
*/ 
function Encript($string) 
{ 
    switch ($string) { 
     case "a" : 
      $int = 1; 
     break; 
     case "b" : 
      $int = 2; 
     break; 
     case "c" : 
      $int = 3; 
     break; 
     case "d" : 
      $int = 4; 
     break; 
     case "e" : 
      $int = 5; 
     break; 
     case "f" : 
      $int = 6; 
     break; 
     case "g" : 
      $int = 7; 
     break; 
     case "h" : 
      $int = 8; 
     break; 
     case "i" : 
      $int = 9; 
     break; 
     case "j" : 
      $int = 10; 
     break; 
     case "k" : 
      $int = 11; 
     break; 
     case "l" : 
      $int = 12; 
     break; 
     case "m" : 
      $int = 13; 
     break; 
     case "n" : 
      $int = 14; 
     break; 
     case "o" : 
      $int = 15; 
     break; 
     case "p" : 
      $int = 16; 
     break; 
     case "q" : 
      $int = 17; 
     break; 
     case "r" : 
      $int = 18; 
     break; 
     case "s" : 
      $int = 19; 
     break; 
     case "t" : 
      $int = 20; 
     break; 
     case "u" : 
      $int = 21; 
     break; 
     case "v" : 
      $int = 22; 
     break; 
     case "w" : 
      $int = 23; 
     break; 
     case "x" : 
      $int = 24; 
     break; 
     case "y" : 
      $int = 25; 
     break; 
     case "z" : 
      $int = 26; 
     break; 
     default : 
      $int = 0; 
     break; 
    } 
    return $int; 
} 
function Decript($int) 
{ 
    switch ($int) { 
     case 0 : 
      $text = " "; 
     break; 
     case 1 : 
      $text = "a"; 
     break; 
     case 2 : 
      $text = "b"; 
     break; 
     case 3 : 
      $text = "c"; 
     break; 
     case 4 : 
      $text = "d"; 
     break; 
     case 5 : 
      $text = "e"; 
     break; 
     case 6 : 
      $text = "f"; 
     break; 
     case 7 : 
      $text = "g"; 
     break; 
     case 8 : 
      $text = "h"; 
     break; 
     case 9 : 
      $text = "i"; 
     break; 
     case 10 : 
      $text = "j"; 
     break; 
     case 11 : 
      $text = "k"; 
     break; 
     case 12 : 
      $text = "l"; 
     break; 
     case 13 : 
      $text = "m"; 
     break; 
     case 14 : 
      $text = "n"; 
     break; 
     case 15 : 
      $text = "o"; 
     break; 
     case 16 : 
      $text = "p"; 
     break; 
     case 17 : 
      $text = "q"; 
     break; 
     case 18 : 
      $text = "r"; 
     break; 
     case 19 : 
      $text = "s"; 
     break; 
     case 20 : 
      $text = "t"; 
     break; 
     case 21 : 
      $text = "u"; 
     break; 
     case 22 : 
      $text = "v"; 
     break; 
     case 23 : 
      $text = "w"; 
     break; 
     case 24 : 
      $text = "x"; 
     break; 
     case 25 : 
      $text = "y"; 
     break; 
     case 26 : 
      $text = "z"; 
     break; 
     default : 
      $text = "?"; 
     break; 
    } 
    return $text; 
} 

$int = strtolower("abcdefghijklmnopqrstuvwxyz"); 
echo "Original : ".$int; 
$array = str_split($int); 
$totalNumber = ""; 
$total = count($array); 
for ($i = 0; $i < $total; $i++) { 
    $number = Encript($array[$i]); 
    $number = $number + 0.22; 
    $number = $number * 20.12; 
    $totalNumber .= $number."/"; 
} 
echo "<br>Encription = ".$totalNumber; 
$backwards = explode("/",$totalNumber); 
$countBackwards = count($backwards)-1; 

$totalText = ""; 
for($j = 0; $j < $countBackwards; $j++) 
{ 
    $int = $backwards[$j]; 
    $int = $int/20.12; 
    $int = $int - 0.22; 
    var_dump($int); 
    $text = Decript($int); 
    $totalText .= $text; 
} 
echo "<br>"; 
echo "Decription : ".$totalText; 

我知道这不是最干净的代码,但是当我发现问题时我会清理它。 输入是abcdefghijklmnopqrstuvwxyz,并且这也必须是结果后的结果。 但解码后,我得到这个:?b ?? efghi ??????? qrstuvwxy?

+2

您可以更新您的问题声明你想要的结果是什么,你在说什么吧。 – Darren

+0

我已经改变@达伦 –

+0

这不是加密,你在做编码。 –

回答

2

你一定要圆减法的输出,将解决你的问题:

$totalText = ""; 
for($j = 0; $j < $countBackwards; $j++) 
{ 
    $int = $backwards[$j]; 
    $int = $int/20.12; 

    $int = round($int - 0.22); // Rounded the final output 

    //var_dump($int); 
    $text = Decript($int); 
    $totalText .= $text; 
} 
+0

谢谢,解决了! –

-1

试试这个工作只需更换Decript(strval($ INT)); ...

function Encript($string) 
{ 
switch ($string) { 
    case "a" : 
     $int = 1; 
     break; 
    case "b" : 
     $int = 2; 
     break; 
    case "c" : 
     $int = 3; 
     break; 
    case "d" : 
     $int = 4; 
     break; 
    case "e" : 
     $int = 5; 
     break; 
    case "f" : 
     $int = 6; 
     break; 
    case "g" : 
     $int = 7; 
     break; 
    case "h" : 
     $int = 8; 
     break; 
    case "i" : 
     $int = 9; 
     break; 
    case "j" : 
     $int = 10; 
     break; 
    case "k" : 
     $int = 11; 
     break; 
    case "l" : 
     $int = 12; 
     break; 
    case "m" : 
     $int = 13; 
     break; 
    case "n" : 
     $int = 14; 
     break; 
    case "o" : 
     $int = 15; 
     break; 
    case "p" : 
     $int = 16; 
     break; 
    case "q" : 
     $int = 17; 
     break; 
    case "r" : 
     $int = 18; 
     break; 
    case "s" : 
     $int = 19; 
     break; 
    case "t" : 
     $int = 20; 
     break; 
    case "u" : 
     $int = 21; 
     break; 
    case "v" : 
     $int = 22; 
     break; 
    case "w" : 
     $int = 23; 
     break; 
    case "x" : 
     $int = 24; 
     break; 
    case "y" : 
     $int = 25; 
     break; 
    case "z" : 
     $int = 26; 
     break; 
    default : 
     $int = 0; 
     break; 
} 
return $int; 
} 

function Decript($int) 
{ 
switch ($int) { 
    case "0" : 
     $text = " "; 
     break; 
    case 1: 
     $text = "a"; 
     break; 
    case 2 : 
     $text = "b"; 
     break; 
    case 3 : 
     $text = "c"; 
     break; 
    case 4 : 
     $text = "d"; 
     break; 
    case 5 : 
     $text = "e"; 
     break; 
    case 6 : 
     $text = "f"; 
     break; 
    case 7 : 
     $text = "g"; 
     break; 
    case 8 : 
     $text = "h"; 
     break; 
    case 9 : 
     $text = "i"; 
     break; 
    case 10 : 
     $text = "j"; 
     break; 
    case 11 : 
     $text = "k"; 
     break; 
    case 12 : 
     $text = "l"; 
     break; 
    case 13 : 
     $text = "m"; 
     break; 
    case 14 : 
     $text = "n"; 
     break; 
    case 15 : 
     $text = "o"; 
     break; 
    case 16 : 
     $text = "p"; 
     break; 
    case 17 : 
     $text = "q"; 
     break; 
    case 18 : 
     $text = "r"; 
     break; 
    case 19 : 
     $text = "s"; 
     break; 
    case 20 : 
     $text = "t"; 
     break; 
    case 21 : 
     $text = "u"; 
     break; 
    case 22 : 
     $text = "v"; 
     break; 
    case 23 : 
     $text = "w"; 
     break; 
    case 24 : 
     $text = "x"; 
     break; 
    case 25 : 
     $text = "y"; 
     break; 
    case 26 : 
     $text = "z"; 
     break; 
    default : 
     $text = "?"; 
     break; 
} 
return $text; 
} 
$int = strtolower("abcdefghijklmnopqrstuvwxyz"); 
echo "Original : ".$int; 
$array = str_split($int); 
$totalNumber = ""; 
$total = count($array); 
for ($i = 0; $i < $total; $i++) { 
    $number = Encript($array[$i]); 
    $number = $number + 0.22; 
    $number = $number * 20.12; 
    $totalNumber .= $number."/"; 
} 
echo "<br>Encription = ".$totalNumber; 
$backwards = explode("/",$totalNumber); 
$countBackwards = count($backwards)-1; 

$totalText = ""; 
for($j = 0; $j < $countBackwards; $j++) 
{ 
    $int = $backwards[$j]; 
    $int = $int/20.12; 
    $int = $int - 0.22; 

    var_dump($int); 

    $text = Decript(strval($int)); 
    $totalText .= $text; 
} 
echo "<br>"; 
echo "Decription : ".$totalText; 

谢谢....

+0

我的代码也在你的方式正确运行,请尝试它 –