Percursos
/
PHP
PHP
/
Exercícios
/
Cifra simples
Cifra simples

Cifra simples

Médio

Instruções

Cria uma implementação da cifra de Vigenère. A cifra de Vigenère é uma cifra de substituição simples.

Terminologia de cifra

Uma cifra é um algoritmo usado para cifrar, ou codificar, uma string. A string não cifrada chama-se texto simples e a string cifrada chama-se texto cifrado. A conversão de texto simples em texto cifrado chama-se codificação, enquanto o inverso se chama descodificação.

Numa cifra de substituição, cada letra do texto simples é substituída por uma letra do texto cifrado, que é calculada com a ajuda de uma chave. (Nota: é possível que a letra de substituição seja a mesma que a letra original.)

Detalhes da codificação

Nesta cifra, a chave é uma série de letras minúsculas, como "abcd". Cada letra do texto simples é deslocada ou rodada numa distância com base numa letra correspondente da chave. Um "a" na chave significa um deslocamento de 0 (ou seja, nenhum deslocamento). Um "b" na chave significa um deslocamento de 1. Um "c" na chave significa um deslocamento de 2, e assim por diante.

A primeira letra do texto simples usa a primeira letra da chave, a segunda letra do texto simples usa a segunda letra da chave, e assim por diante. Se ficares sem letras na chave antes de ficares sem letras no texto simples, começa de novo a partir do início da chave.

Se a chave contiver apenas uma letra, como "dddddd", então todas as letras do texto simples são deslocadas pela mesma quantidade (três neste exemplo), o que faria com que fosse o mesmo que uma cifra de rotação ou cifra de deslocamento (por vezes chamada cifra de César). Por exemplo, o texto simples "iamapandabear" passaria a ser "ldpdsdqgdehdu".

Se a chave contiver apenas a letra "a" (uma ou mais vezes), a distância de deslocamento é zero e o texto cifrado é igual ao texto simples.

Normalmente, porém, a chave é mais complicada do que isso! Se a chave for "abcd", então as letras do texto simples seriam deslocadas por uma distância de 0, 1, 2 e 3. Se o texto simples for "hello", precisamos de 5 deslocamentos, pelo que a chave daria a volta, dando distâncias de deslocamento de 0, 1, 2, 3 e 0. Aplicando esses deslocamentos às letras de "hello", obtemos "hfnoo".

Chaves aleatórias

Se não for fornecida uma chave, gera uma chave que consiste em, pelo menos, 100 letras minúsculas aleatórias do alfabeto latino.

Editar via GitHub A ligação abre numa nova janela ou separador
PHP Exercism

Estás pronto para começar Cifra simples?

Inscreve-te no Exercism para aprenderes e dominares PHP com 11 conceitos122 exercícios, e mentoria humana real, tudo grátis.