Categorias
Coding

Caesar Cipher Encode

E aí, conseguiram utilizar o Caesar Cipher Decode de boas? Então vamos para o encode, que pasmem, vocês já estavam com a solução nas mãos, ou melhor, nos dedos o tempo todo.

E aí, conseguiram utilizar o Caesar Cipher Decode de boas?

Então vamos para o encode, que pasmem, vocês já estavam com a solução nas mãos, ou melhor, nos dedos o tempo todo.

O código do encode é basicamento o mesmo do decode, a diferença está em um detalhe que as vezes passa despercebido. Vamos lá?

function CaesarCipherEncode($string, $casas = 9) {
  $abc = range('a', 'z');
  $cifrado = '';
  foreach (str_split(strtolower($string)) as $letter) {
      if (ctype_alpha($letter)) {
          foreach ($abc as $key => $alpha) {
              if (($key + $casas) >= count($abc)) {
                  $cifrado .= $abc[($key + $casas) - count($abc)];
              } else {
                  $cifrado .= $abc[$key + $casas];
              }
          }
      } else {
          $cifrado .= $letter;
      }
  }
  return $cifrado;
}

Percebam que a estrutura é a mesma, e claro, não temos a variável decifrado, mas temos a $cifrado, que vai funcionar da mesma forma.

A partir daí tudo é basicamente igual, até chegarmos no if que vinha a key (numero da letra no alfabeto/iniciado do zero) e o numero da casa que pulamos.

Lembra que aqui era feita uma subtração entre o key e casas? Agora temos uma soma, pois estamos avançando casas. Antes também, viamos se a subtração de key e casas era menor que zero e agora verificamos se a soma dos dois é maior ou igual ao valor da nossa array $abc.

Caso $key+casas for maior ou igual a count($abc), temos a nossa letra codificada atravez de $abc[($key+$casa)-count($abc). Percebam que aqui também há uma diferença no nosso código anterior, que era key-casa+count(abc). Invertemos jogo, ou melhor, o jogo virou, não é mesmo? Onde havia subtração há soma e onde tinha soma agora temos uma subtração.

Tá tudo entendido agora?

Espero que tenham gostado, e até a próxima com mais códigos.

Deixe uma resposta

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.