Bilgisayar biliminde 'Anahtar' nedir?


14

Bilgisayar anahtarında 'anahtarın' anlamının tam olarak ne olduğu konusunda biraz kafam karıştı. Anahtar / değer çiftlerini, birincil anahtarları vb. Anlıyorum ... Ama 'anahtar' teriminin kendi başına ne anlama geldiğini anlayamıyorum.

Anlayabildiğim kadarıyla sadece bir veri parçası anlamına geliyor. CLRS'de, ağaç düğümleriyle ilişkili verilere 'anahtar' denir. Karma tabloyu aramak için kullanılan verilere 'anahtar' denir. Bu bir 'anahtar' mı?


18
Belirli bir teknik tanım yoktur. Kelimenin kullanımı genellikle normal, İngilizce tanımından esinlenmiştir, örneğin merriam-webster.com/dictionary/key Ya da daha ziyade "tanım s " demeliyim . Genel olarak beklentiniz, tek bir çalışma alanında bile birden fazla bağlamda kullanılan yaygın İngilizce kelimeler için birleştirici bir teknik tanım olmamasıdır .
Derek Elkins SE

4
Hatta klavyenizde bu şeylerden biri olabilir :-)
jamesqf

Aslında normal İngilizce'de aynıdır - anahtar rakam = hikayedeki birincil kişi, anahtar kanıt = bir vakanın çözülmesine yol açan birincil kanıt, anahtar = bir kapının kilidini açmak için birincil mekanizma vb. bir şeye erişmek için ". CS'ye özgü değil
slebetman

Ayrıca, bahsettiğiniz veri arama örneklerinden farklı olduğunu düşündüğüm kriptografik anlamda "anahtarlar" da vardır.
200_success

@slebetman 'Anahtar' gerçekten İngilizce dilinde birçok kullanıma sahip olsa da, CS'ye (bir alt alanı) çok spesifik olan kesin bir tanımı olan birçok kullanım vardır.
Ayrık kertenkele

Yanıtlar:


30

En genel anlamda, anahtar, bazı verileri almak için gerekli bir bilgi parçasıdır. Bununla birlikte, bu anlam, tam olarak hangi durumla uğraştığınıza bağlı olarak farklı şekilde ortaya çıkar.

Bahsettiğiniz bağlamlarda, anahtar, yapıdaki bir konumdan almak için kullanılan tüm veriler için benzersiz bir tanımlayıcıdır . Her anahtar yalnızca bir öğeyle ilişkilendirilir, bu nedenle belirli bir veri kümesini bulmak için kullanılabilir. Veri yapısı genellikle, anahtarın bulunmasının tüm veriler boyunca doğrusal bir aramadan çok daha verimli olacağı şekilde düzenlenecektir. Bazen anahtar aslında verinin bir parçasıdır ve onunla birlikte saklanır (veritabanındaki birincil anahtarlar gibi); diğer zamanlarda, verilerin kendisinden ayrılır (karma haritadaki gibi). Veri yapısı ayrıca verimli arama algoritmasını desteklemek için anahtarda (ve yalnızca anahtarda) ekstra işlem gerçekleştirir (karma haritasında olduğu gibi, anahtar karma koduna dönüştürülür veya veritabanı birincil anahtarları kullanarak dizinler bir B-ağacı).

Kriptografide bir anahtar, kilitlerde kullanılan fiziksel anahtarlara benzer bir anlamda kullanılır. Bunlar şifrelenmiş verilerden orijinali elde etmek için gerekli veri parçalarıdır (tabiri caizse verinin "kilidini açmak").


3
Olası karışıklığı önlemek için: kitap CLRS içinde, tuşlar genellikle edilir değil birçok veri yapıları için olmak zorunda değilsiniz gibi benzersiz olarak kabul.
Ayrık kertenkele

O zaman, genel olarak, bir veri yapısında gezinmek için anahtar bir veri? Bu bana mantıklı geliyor, tıpkı kilitli bir kutudan bir şey almak için fiziksel bir anahtar kullanılmış gibi.
TheMax

@TheMax Yapacağım bir "navigasyon" olmadığı için tanımın kriptografiye uygun olduğunu söylemem. Örnek listenize uyuyor, ancak bu durumlarda fiziksel bir anahtara paralel olarak görmüyorum.
jpmc26

@ jpmc26 bu açık olduğu gibi, verilere karşı bir anahtarın bit XOR düşünün,
mckenzm

Bugün gördüğümüz ölçeklerde, sentetik anahtarlar için kullanılan karmalar gerçekten benzersiz olmayabilir ve kravat kırıcılara veya birleştirmeye ihtiyaç duyabilir.
mckenzm

12

Veri yapıları bağlamındaki bir anahtar (CLRS kitabında olduğu gibi), bir veri yapısının belirli bir bileşenini tanımlamak için kullanılan bir değerdir (genellikle bir tam sayı). Genellikle, tuşlar temeldeki verinin nasıl saklanacağını veya değiştirileceğini belirler. Örneğin, ikili arama ağaçlarında , her düğüm için, bu düğümün anahtarının sol alt ağaçtaki anahtarlardan daha büyük ve sağ alt ağacın anahtarlarından daha küçük olduğuna sahibiz. Bu özellik, belirli bir anahtarın aranmasını kolaylaştırır (veya böyle bir anahtarla düğüm olmadığını belirler).

Uygulamada, 'gerçek' verilerimiz genellikle bir anahtar değil, tek bir sayıdan daha büyük ve daha alakalı bir şeydir. Bu veriler uydu verileri olarak adlandırılır ve anahtar her hareket ettirildiğinde uydu verileri hareket ettiği sürece (aksi takdirde verilerinizin izini kaybedersiniz) veri yapılarındaki manipülasyonlarla uğraşırken çoğunlukla göz ardı edilebilir.


Bir anahtar kavramı veritabanları bağlamında benzerdir, ancak genellikle bir anahtarın benzersiz olması gerekir . Birincil anahtarın benzersiz olması gerekir. Bu gereksinim veri yapıları bağlamında sıklıkla gereklidir, ancak bazen basitlik için yapılır.

Şifrelemede, bir anahtar genellikle belirli bir en- veya şifre çözme algoritması ile şifrelemek veya şifresini çözmek için gerekli olan (genellikle gizli, ancak her zaman değil!) Bir parametreyi ifade eder. Şifreleme veya şifre çözme işleminin başarılı olması için şifreleme ve şifre çözme için kullanılan anahtarların 'ilgili' olması gerekir (simetrik şifrelemede, aynı olması gerekir).


Uydu verileri ve anahtarlar arasındaki fark nedir? Anladığım kadarıyla uydu verileri, gerçek yapının bir parçası olmayan veri yapısı tarafından düzenlenen verilerdir. Öyleyse bir anahtar ve uydu verisinin yapıdaki veriler olduğunu söyleyebilirim, ancak anahtarlar yapının bir parçası ve uydu verisi değil mi?
TheMax

1
@TheMax Bir bakıma, evet. Uydu verilerinin kesin içeriği, veri yapısı üzerindeki işlemler için önemsizdir (ancak veri yapısını kullanan uygulama için büyük olasılıkla önemlidir). Bu anahtar ve verinin ayrıştırılması, verimli veri yapılarının tasarlanmasını kolaylaştırır.
Ayrık kertenkele
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.