我对计算机科学中“键”的确切含义有些困惑。我了解键值对,主键等。但是我找不到“键”一词本身的定义。
据我所知,这仅意味着一条数据。在CLRS中,与树节点关联的数据称为“键”。搜索哈希表的数据称为“键”。这是“钥匙”吗?
我对计算机科学中“键”的确切含义有些困惑。我了解键值对,主键等。但是我找不到“键”一词本身的定义。
据我所知,这仅意味着一条数据。在CLRS中,与树节点关联的数据称为“键”。搜索哈希表的数据称为“键”。这是“钥匙”吗?
Answers:
从最一般的意义上讲,密钥是检索某些数据所需的一条信息。但是,根据您要处理的具体情况,此含义会有所不同。
在您提到的上下文中,键是用于从结构中某个位置检索它的完整数据的唯一标识符。每个键仅与一个项目相关联,因此可用于查找特定的数据集。数据结构通常以这样的方式组织:找到密钥比线性搜索所有数据要有效得多。有时,密钥实际上是数据的一部分,并与数据一起存储(例如数据库中的主键);其他时候,它与数据本身隔离(就像在哈希图中一样)。数据结构还将经常对键(仅键)执行额外的处理,以支持其有效的搜索算法(例如在哈希图中,将键转换为哈希码,或者数据库将使用B树)。
在密码学中,密钥的使用类似于锁上使用的物理密钥。它们是从加密数据中获取原始数据(所谓的“解锁”数据)所需的数据。
甲密钥在数据结构(如在书CLRS)的上下文中是用于标识一个数据结构的特定成分的值(通常为整数)。通常,键决定如何存储或操纵基础数据。例如,在二叉搜索树中,对于每个节点,该节点的键大于左子树中的键,小于右子树中的键。通过此属性,可以更轻松地搜索给定的键(或确定不存在具有该键的节点)。
实际上,我们的“实际”数据通常不是关键,而是一些更大,更相关的数据。该数据称为卫星数据,只要处理密钥时只要移动卫星数据(否则,您就无法跟踪数据),则在处理数据结构时几乎可以忽略该数据。
密钥的概念在数据库的上下文中是相似的,但是通常要求密钥是唯一的。例如,主键必须是唯一的。此要求通常在数据结构的上下文中是必要的,但有时是出于简化目的。
在密码术中,密钥通常是指使用给定的加密算法或解密算法加密或解密所需的(通常是秘密的,但并非总是如此!)参数。为了成功进行加密或解密过程,用于加密和解密的密钥必须“相关”(在对称加密中,必须相同)。