Qu'est-ce qu'une «clé» en informatique?


14

Je suis un peu confus quant à la signification exacte d'une «clé» en informatique. Je comprends les paires clé-valeur, clés primaires, etc ... Mais je ne trouve pas de définition de ce que le terme "clé" signifie par lui-même.

Pour autant que je sache, cela signifie simplement une donnée. Dans CLRS, les données associées aux nœuds d'arbre sont appelées «clés». Les données pour rechercher une table de hachage sont appelées «clés». Est-ce cela une «clé»?


18
Il n'y a pas de définition technique spécifique. L'utilisation du mot est généralement inspirée par sa définition anglaise normale, par exemple merriam-webster.com/dictionary/key Ou plutôt je devrais dire "definition s ". En général, vous devriez vous attendre à ce qu'il n'y ait pas de définition technique unificatrice pour les mots anglais courants qui sont utilisés dans plusieurs contextes, même dans un seul domaine d'études.
Derek Elkins a quitté le SE

4
Cela pourrait même être une de ces choses sur votre clavier :-)
jamesqf

C'est en fait la même chose en anglais normal - chiffre clé = la personne principale de l'histoire, élément de preuve clé = la preuve principale qui mène à la résolution d'un cas, clé = le mécanisme principal pour déverrouiller une porte, etc. Cela signifie "le principal moyen accéder à quelque chose "en anglais. Ce n'est pas spécifique à CS
slebetman

Il existe également des «clés» au sens cryptographique, que je considérerais comme différentes des exemples de recherche de données que vous avez mentionnés.
200_success

@slebetman Alors que «key» a en effet de nombreuses utilisations dans la langue anglaise, il existe de nombreuses utilisations qui ont une définition précise qui est très spécifique à (un sous-champ de) CS.
Lézard discret

Réponses:


30

Dans le sens le plus général, une clé est un élément d'information requis pour récupérer certaines données. Cependant, cette signification se joue différemment selon exactement la situation à laquelle vous faites face.

Dans les contextes que vous mentionnez, une clé est un identifiant unique pour les données complètes utilisées pour les récupérer à partir d'un emplacement dans la structure. Chaque clé est associée à un seul élément, elle peut donc être utilisée pour rechercher un ensemble particulier de données. La structure des données sera généralement organisée de manière à ce que la recherche de la clé soit beaucoup plus efficace qu'une recherche linéaire dans toutes les données. Parfois, la clé fait en fait partie des données et est stockée avec elle (comme les clés primaires dans la base de données); d'autres fois, il est séparé des données elles-mêmes (comme dans une carte de hachage). La structure de données effectuera également souvent un traitement supplémentaire sur la clé (et uniquement la clé) pour prendre en charge son algorithme de recherche efficace (comme dans une carte de hachage, la clé est convertie en code de hachage, ou une base de données indexera les clés primaires à l'aide de un arbre B).

En cryptographie, une clé est utilisée dans un sens plus proche des clés physiques utilisées sur les verrous. Ce sont des éléments de données nécessaires pour obtenir l'original à partir des données chiffrées (pour "déverrouiller" les données, pour ainsi dire).


3
Pour éviter toute confusion possible: dans le livre CLRS, les clés ne sont généralement pas considérées comme uniques, car elles ne doivent pas l'être pour de nombreuses structures de données.
Lézard discret

Alors, en général, une clé est la donnée pour naviguer dans une structure de données? Cela a du sens pour moi, comme si une clé physique était utilisée pour récupérer quelque chose dans une boîte verrouillée.
TheMax

@TheMax Je ne dirais pas que la définition convient à la cryptographie, car il n'y a pas de "navigation" à faire. Cela convient à votre liste d'exemples, mais je ne le vois pas comme parallèle à une clé physique dans ces cas.
jpmc26

@ jpmc26 que la description est sur place, considérez le XOR au niveau du bit d'une clé par rapport aux données,
mckenzm

Sur les échelles que nous voyons aujourd'hui, les hachages utilisés pour les clés synthétiques peuvent en effet ne pas être uniques, et peuvent avoir besoin de bris d'égalité ou de composition.
mckenzm

12

Une clé dans le contexte des structures de données (comme dans le livre CLRS) est une valeur (souvent un entier) qui est utilisée pour identifier un certain composant d'une structure de données. Souvent, les clés déterminent comment les données sous-jacentes sont stockées ou manipulées. Par exemple, dans les arbres de recherche binaires, nous avons que pour chaque nœud, la clé de ce nœud est plus grande que les clés du sous-arbre de gauche et plus petite que celles du sous-arbre de droite. Cette propriété facilite la recherche d'une clé donnée (ou détermine qu'il n'y a pas de nœud avec une telle clé).

Dans la pratique, nos données «réelles» ne sont souvent pas une clé, mais quelque chose de plus grand et de plus pertinent qu'un seul chiffre. Ces données sont appelées données satellites et peuvent être la plupart du temps ignorées lors des manipulations sur les structures de données, tant que les données satellites se déplacent chaque fois que la clé est déplacée (sinon, vous perdez la trace de vos données).


Le concept de clé est similaire dans le contexte des bases de données, mais il est souvent nécessaire qu'une clé soit unique . Une clé primaire doit être unique, par exemple. Cette exigence est souvent nécessaire dans le contexte des structures de données, mais est parfois faite pour des raisons de simplicité.

En cryptographie, une clé fait généralement référence à un paramètre (souvent secret, mais pas toujours!) Qui est nécessaire pour chiffrer ou déchiffrer avec un algorithme de déchiffrement ou de déchiffrement donné. Les clés utilisées pour chiffrer et déchiffrer doivent être «liées» (en cryptographie symétrique, la nécessité d'être les mêmes) pour que le processus de chiffrement ou de déchiffrement réussisse.


Quelle est alors la différence entre les données satellite et les clés? D'après ce que je comprends, les données satellite sont des données organisées par la structure de données qui ne font pas partie de la structure réelle. Alors, puis-je dire que les clés et les données satellite sont toutes deux des données dans la structure, mais les clés font partie de la structure et les données satellite ne le sont pas?
TheMax

1
@TheMax D'une certaine manière, oui. Le contenu précis des données satellitaires n'est pas pertinent pour les opérations sur la structure de données (mais est probablement pertinent pour l'application utilisant la structure de données). Ce découplage des clés et des données facilite la conception de structures de données efficaces.
Lézard discret
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.