Salut à tous, J'essaye actuellement d'écrire un chiffrement de chaîne à la compilation (en utilisant les mots 'string' et 'encryption' assez librement) lib.Manipulation 'String' au moment de la compilation avec des modèles variadiques
Ce que j'est jusqu'à présent comme suit:
// Cacluate narrow string length at compile-time
template <char... ArgsT>
struct CountArgs
{
template <char... ArgsInnerT> struct Counter;
template <char Cur, char... Tail>
struct Counter<Cur, Tail...>
{
static unsigned long const Value = Counter<Tail...>::Value + 1;
};
template <char Cur>
struct Counter<Cur>
{
static unsigned long const Value = 1;
};
static unsigned long const Value = Counter<ArgsT...>::Value;
};
// 'Encrypt' narrow string at compile-time
template <char... Chars>
struct EncryptCharsA
{
static const char Value[CountArgs<Chars...>::Value + 1];
};
template<char... Chars>
char const EncryptCharsA<Chars...>::Value[CountArgs<Chars...>::Value + 1] =
{
Chars...
};
Cependant je ne peux pas comprendre comment effectuer des opérations sur les personnages que je les développer dans le tableau statique. Je voudrais juste exécuter une opération simple sur chaque caractère (par exemple '(((c^0x12)^0x55) + 1)' où c est le caractère).
Une poussée dans la bonne direction serait grandement appréciée.
Merci à tous.
Pourriez-vous donner un exemple sur la façon dont vous souhaitez utiliser cela avec les fonctions indiquées ci-dessus? – David
char const * const pFooEnc = EncryptCharsA <'F','o','o'> :: Valeur; – RaptorFactor