Trilhas
/
PHP
PHP
/
Exercícios
/
Cifra simples
Cifra simples

Cifra simples

Médio

Instruções

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

Terminologia de cifras

Uma cifra é um algoritmo usado para criptografar, ou codificar, uma string. A string não criptografada é chamada de texto claro e a string criptografada é chamada de texto cifrado. Converter texto claro em texto cifrado é chamado de codificação, enquanto o inverso é chamado de decodificação.

Em uma cifra de substituição, cada letra do texto claro é substituída por uma letra do texto cifrado, que é calculada com a ajuda de uma chave. (Repare que a letra substituta pode ser igual à letra original.)

Detalhes da codificação

Nesta cifra, a chave é uma sequência de letras minúsculas, como "abcd". Cada letra do texto claro é deslocada ou rotacionada em uma distância baseada na 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 claro usa a primeira letra da chave, a segunda letra do texto claro usa a segunda letra da chave, e assim por diante. Se as letras da chave acabarem antes das letras do texto claro, comece de novo do início da chave.

Se a chave contiver apenas uma letra, como "dddddd", todas as letras do texto claro serão deslocadas pela mesma quantidade (três, neste exemplo), o que faz disso a mesma coisa que uma cifra de rotação ou cifra de deslocamento (às vezes chamada de cifra de César). Por exemplo, o texto claro "iamapandabear" se tornaria "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 claro.

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

Chaves aleatórias

Se nenhuma chave for fornecida, gere uma chave composta por pelo menos 100 letras minúsculas aleatórias do alfabeto latino.

Editar via GitHub O link abre em uma nova janela ou aba
PHP Exercism

Tudo pronto para começar Cifra simples?

Crie sua conta no Exercism para aprender e dominar PHP com 11 conceitos122 exercícios e mentoria humana de verdade, tudo de graça.