Pergunta

A questão é para qualquer moderna não gerenciado language.C-como línguas, Delphi, nada.

Eu gostaria de criar meu próprio algoritmo de criptografia que, ao contrário de outros, diminui o comprimento do string encriptada.

Meu primeiro pensamento foi para criar minha própria similiar sistema numberic para hexadicimal, mas com mais exemplo characters.For [0..9] + [A..Z] .que faria um número até 40 em um valor dígito. Eu também poderia adicionar outros dígitos, como '!,. /?) (#!', e assim por diante.

A minha pergunta é como implementar tal sistema numberic de A a Z inculding 0 a 9.Do eu tenho que declarar todos os valores único tão constante até 0xZZZZZZZZ? que faria minha vida terrível

Por favor me dê suas sugestões, exemplos. :)

Foi útil?

Solução

Vamos pensar sobre isso.

Cada personagem base 40 leva até 8 bits. Ele codifica um número de 0 a 39, que é apenas um cabelo mais do que de 5 bits de informação actual.

Um único byte pode representar 256 valores diferentes. Uma base 40 que codifica representa apenas 40 valores diferentes, em que mesmo byte.

Esta parece ser uma rede de perda de 2-3 bits por byte codificado.

Dito isto, um valor base 40 é uma string e nada mais. Nenhuma declaração banco de dados de fantasia é necessária -. É apenas uma string

Você escreve duas funções - toBase40 (someBytes) e toBytes (someBase40string) para converter suas cordas base40 para cadeias comuns

.

Se você quer uma solução existente bem-feito, pesquisar base64 .

Outras dicas

Você precisaria mudança maneira como os computadores e obras de armazenamento.

Não há memória livre e não há nenhuma maneira de obter espaço para livre. Alterar o sistema de número iria dar-lhe mais espaço quando você escrevê-la no papel, mas na memória do computador, você ainda precisa mesma quantidade de bits.

Além disso, observe que, se você quiser criptografar algo, que a operação também evita qualquer compressão significativa desde o conteúdo criptografado deve ser tão perto aleatória possível.

Normalmente alguma compressão forma é feito antes de criptografia (GZip ou algo similar), mas isso não funcionar, alterando sistemas de número.

P.S. Use algum algoritmo de criptografia comprovada.

Normalmente o caminho algoritmos de criptografia reduzir o tamanho do texto cifrado é executar o texto através de um algoritmo geral de compressão objetivo primeiro, em seguida, criptografar o resultado comprimido. Você quase sempre obter um melhor resultado desta forma de tentar combinar os dois algoritmos em um.

As pessoas que têm algoritmos de criptografia desenvolvidos gastaram provavelmente milhões de horas-homem, anos na escola grad e pós-docs para obter a sua perícia. O que faz você acha que pode chegar a algo melhor?

Você provavelmente vai vir para cima com um algoritmo não seguro.

Use um algoritmo eo uso de compressão existente.

Eu recomendaria simplesmente comprimindo a entrada (usando gzip, zlib, ou qualquer outro) antes de criptografá-lo. Isto é mais fácil e mais seguro do que criar seu próprio algoritmo. (GnuPG faz isso, por exemplo.)

cordas Base64 são comuns em muitas linguagens de computador e é bastante normal. Ele usa os seguintes caracteres:

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 + /

Consulte http://en.wikipedia.org/wiki/Base64 para mais informações

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top