PHP :: Aufgabe #26

3 Lösungen Lösungen öffentlich

Mit Caesar Chiffre ent- und verschlüsseln

Anfänger - PHP von Dome - 03.01.2013 um 01:30 Uhr
Schreiben Sie ein Programm, indem Sie mit Hilfe der Caesar Chiffre einen beliebigen Text ent- und verschlüsseln können. Zuvor muss der Text und die Anzahl der Verschiebung angegeben werden. Groß- und Kleinschreibung muss nicht beachtet werden.

Konsolenausgabe:

Geben Sie den Text ein: Beispielwort
Um wie viele Stellen soll verschoben werden: 1
Ergebnis: Cfjtqjfmxpsu

Lösungen:

vote_ok
von Jidoka86 (660 Punkte) - 12.05.2016 um 23:36 Uhr
Quellcode ausblenden PHP-Code
<?php
  /**
   *
   */
  class CaesarEncoder
  {

    public function encode($plainText, $offset){
      $encoded = "";
      for ($i=0; $i < strlen($plainText); $i++) {
        $ascii = ord($plainText[$i])+$offset;
        $encoded .= chr($ascii);
      }
      return $encoded;
    }

  }

  $encoder = new CaesarEncoder();

  while(true){
    echo "Geben Sie einen Text ein: ";
    $text = trim(fgets(STDIN));
    if($text == ""){
      echo "Encoder exited\n";
      break;
    }
    echo "Um wie viele Stellen soll verschoben werden: ";
    $offset = trim(fgets(STDIN));

    echo "Ergebnis: {$encoder->encode($text, $offset)}\n";
  }

vote_ok
von syneex (2650 Punkte) - 24.09.2018 um 14:07 Uhr
Quellcode ausblenden HTML-Code
<!DOCTYPE html>
<html>
<head>
	<title>Caesar Chiffre</title>
</head>
<body>
	<form method="POST">
		Geben Sie den Text ein:<br>
		<input type="text" name="phrase"><br>
		Um Wieviele Stellen soll verschoben werden?<br>
		<input type="number" name="verschub"><br><br>
		<input type="submit" name="">	
	</form>
</body>
</html>
Quellcode ausblenden PHP-Code
<?php
if(isset($_POST['phrase']) && isset($_POST['verschub']))
{
	$array = createAsciiArray($_POST['phrase']);
	$erg = convertAsciiarrayToStringarray(changeAsciiRange($array, $_POST['verschub']));
	echo implode("", $erg);
}

function createAsciiArray($string)
{
	$arr = str_split($string);
	return changeAsciiNumber($arr);
}
function changeAsciiNumber($chararray)
{
	$newArray = array();
	for($i = 0; $i < count($chararray); $i++)
	{
		$newArray[$i] = ord($chararray[$i]);
	}
	return $newArray;
}
function changeAsciiRange($numberarray, $changevalue)
{
	for($x = 0; $x < count($numberarray); $x++)
	{
		$numberarray[$x] += $changevalue;
	}
	return $numberarray;
}
function convertAsciiarrayToStringarray($asciiarray)
{
	$lastArray = array();
	for($o = 0; $o < count($asciiarray); $o++)
	{
		$lastArray[$o] = chr($asciiarray[$o]);
	}
	return $lastArray;
}
?>
vote_ok
von paddlboot (2970 Punkte) - 08.08.2019 um 10:23 Uhr
Quellcode ausblenden PHP-Code
<?php

//beliebigen Text eingeben
$text = 'Beispielwort';
$verschiebung = 1;
$erg = '';

echo 'Text: '.$text.'<br/>Verschiebung: '.$verschiebung.'<br/>';

$text = strtolower($text);

$buchstaben = 'abcdefghijklmnopqrstuvwxyz';

for($i = 0; $i < strlen($text); $i++)
{
	$stelle = strpos($buchstaben, $text[$i]);

	if($stelle+$verschiebung > 25)
	{
		$pos = ($stelle+$verschiebung) - 26;
	}
	else
	{
		$pos = $stelle+$verschiebung;
	}

	$erg .= $buchstaben[$pos];
}

echo $erg;

?>