2010-06-16 9 views
15

J'ai une chaîne de 10-15 caractères et je veux crypter cette chaîne. Le problème est que je veux obtenir une chaîne chiffrée la plus courte possible. Je vais également vouloir déchiffrer cette chaîne à sa chaîne d'origine.Quel algorithme de chiffrement est le meilleur pour les petites chaînes?

Quel algorithme de chiffrement correspond le mieux à cette situation?

+2

Est-ce une exigence que le chiffrement soit "dur" (dans ce cas, je veux dire juste non-trivial) à craquer, ou est-ce seulement dans le but de raccourcir les chaînes? –

+0

raccourcir la chaîne, et "plus difficile à casser" est juste un bonus –

Répondre

7

AES utilise une taille de bloc de 16 octets; il est admirablement adapté à vos besoins si votre limite de 10-15 caractères est ferme. Le schéma de remplissage PKCS # 11 (IIRC) ajoute 6-1 octets aux données et génère une sortie de 16 octets exactement. Vous n'avez pas vraiment besoin d'utiliser un mode de chiffrement (tel que CBC) puisque vous ne cryptez qu'un seul bloc. La façon dont vous manipulez les clés pose un problème: la gestion des clés de chiffrement pose toujours un problème.

Si vous devez utiliser des longueurs de données plus courtes pour des chaînes plus courtes, vous devez probablement considérer AES en mode CTR. Cela utilise la clé et un compteur pour générer un flux d'octets qui est XOR avec les octets de la chaîne. Cela laisserait votre chaîne cryptée à la même longueur que la chaîne de texte en clair d'entrée.

Vous aurez du mal à trouver un algorithme de compression à usage général qui réduit de manière fiable la longueur de ces chaînes courtes, donc la compression avant le cryptage est à peine une option.

1

Si l'objectif principal est de raccourcir, je voudrais chercher une bibliothèque de compression qui permet un dictionnaire fixe construit sur un corpus de chaînes communes.
Personnellement, je n'ai pas d'expérience avec cela, mais je parie LZMA peut le faire.

Questions connexes