Je recommande en fait en utilisant la cryptographie moderne comme AES-CBC, mais si vous voulez jouer avec la cryptographie rétro laisse alors vous amuser ici. Puisque votre sortie de cryptage est du texte, je pourrais suggérer l'utilisation de l'addition modulo plutôt que XOR. Utilisez uniquement XOR lorsque vous travaillez avec des octets, pas pour les caractères. Vous devrez éviter certains caractères spéciaux dans la sortie. Dans ce cas, vous semblez avoir des problèmes avec le caractère NULL. Vous pouvez éviter la sortie de caractères en définissant un jeu de caractères.
Par exemple, vous pouvez utiliser uniquement des caractères compris entre 1 et 127 (tous les caractères ASCII sauf NULL). Cela signifierait que la base serait 1 et que le module serait 126 = (127 - 1)
Pour coder un caractère, soustrayez d'abord la base. Ajoutez la valeur de clé. Ensuite, obtenez le résultat du module. Enfin, ajoutez la base arrière dans
La valeur décimale de la lettre minuscule d est 100.
100 -. 1 = 99 // soustrayez la base
99 + 904932 = 905031 // ajouter la valeur de clé, occasion votre exemplaire ici
905031% 126 = 99 // résultat module lol 904932% de = 0 99 + 1 = 100 // ajouter la base arrière dans
Étant donné que votre valeur de clé est divisible par le module 126 la sortie est égal à l'entrée.
Annulation de l'addition modulo est une procédure légèrement différente.
100-1 = 99 // soustraire la base
99-904932 = -904833 // soustraire la valeur de clé
-904833% 126 = -27 // module résultent
126 + -27 = 99 // ajouter le module au résultat du module
99 + 1 = 100 // rajouter la base dans
vous pouvez définir le module aussi haut que vous voulez inclure autant de caractères que vous voulez dans votre jeu de caractères, et Certains maths de fantaisie vous pouvez mapper des caractères aux valeurs entières en aucune façon. Bien que je dise que vous pouvez mapper les caractères de quelque façon que vous voulez la vérité est que vous êtes limité par le média sur lequel le texte est écrit. Vous ne pouvez pas définir un module supérieur au nombre total de caractères que le média peut transporter, mais vous pouvez avoir des mappages de caractères séparés pour les valeurs codées et décodées.
Je commenterai également votre sélection de valeur de clé. L'application de la même valeur de clé à tous les caractères concerne la forme de chiffrement la plus faible possible. (Est-ce que ROT13 peut vraiment être considéré comme un chiffrement?) Réfléchissez à certaines façons de faire varier la valeur de la clé pour chaque caractère. Quelque chose qui a été fait lorsque ce type de crypto était utilisé était d'incrémenter la clé d'une certaine valeur pour chaque caractère, ou d'ajouter la valeur du caractère traité à la clé.
Utiliser la clé: = strtoint (edit2.text) et $ 7F + 128; - Il résoudra votre problème NULL pour les chaînes ASCII. – kludg