En cryptographie, le remplissage PKCS # 7 est un schéma de remplissage qui ajoute un nombre d'octets N ≥ 1, où la valeur de chaque octet ajouté est égale à N.
Par exemple, Hello, World!
qui a 13 octets, est le suivant en hexadécimal:
48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21
Si nous choisissons de PKCS # 7 pad à la longueur 16, alors le résultat est:
48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21 03 03 03
Et si nous choisissons de remplir la longueur 20, le résultat est:
48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21 07 07 07 07 07 07 07
Notez que dans le premier exemple, nous ajoutons trois 03
octets, et dans le second, nous ajoutons sept 07
octets.
Votre tâche consistera à valider si une chaîne (ou un tableau d'entiers) a un remplissage PKCS # 7 correct. Autrement dit, si le dernier octet de la chaîne d'entrée est N, votre programme doit vérifier que les N derniers octets de la chaîne sont égaux à N.
Contribution
Une seule chaîne ASCII non vide contenant des caractères entre les points de code 1 et 127 inclus. Si vous le souhaitez, vous pouvez prendre l'entrée comme un tableau d'entiers à la place.
Sortie
Une valeur vraie si la chaîne d'entrée a un remplissage PKCS # 7 valide, sinon une valeur fausse.
Les fonctions et les programmes complets sont acceptables. Il s'agit de code-golf , donc l'objectif est de minimiser le nombre d'octets dans votre code.
Cas de test
La version du tableau d'entiers d'entrées est présentée ici - la version de chaîne aurait des caractères non imprimables pour la plupart des cas de test suivants:
Vérité:
[1]
[1, 1]
[2, 1]
[2, 2]
[5, 6, 5, 3, 3, 3]
[1, 1, 2, 2, 1, 1, 2, 2, 1, 1, 2, 2]
[95, 115, 80, 32, 71, 7, 122, 49, 13, 7, 7, 7, 7, 7, 7, 7, 7]
[27, 33, 54, 65, 97, 33, 52, 55, 60, 1, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10]
[15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15]
Faux:
[2]
[1, 2]
[5, 5, 5, 5]
[5, 6, 5, 4, 4, 4]
[3, 3, 3, 94, 3, 3]
[1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2]
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 127]
[50, 39, 94, 105, 49, 29, 74, 102, 2, 106, 44, 7, 7, 7, 7, 7, 7]
[26, 27, 59, 25, 122, 110, 20, 30, 114, 6, 9, 62, 121, 42, 22, 60, 33, 12]
7
s). Vous pouvez penser à cela comme, après le décapage, vous vous retrouveriez avec [1 2 3]
.
[1 2 3 3 3 3]
vrai ou falsey? Je pense que cela devrait être vrai mais je ne suis pas positif.