Temel 64 kodlamasının amacı nedir ve neden HTTP Temel Kimlik Doğrulamasında kullanılır?


129

Base64 şifrelemesini alamıyorum.

Bir Base64 dizesinin şifresini çözebilirseniz, bunun amacı nedir?

Neden HTTP Temel kimlik doğrulaması için kullanılıyor?

Birine parolamın OLLEH olarak değiştirildiğini söylemek gibi.

OLLEH'i gören kişiler, orijinal şifrenin HELLO olduğunu bileceklerdir.




10
base64 bir şifreleme değil, bir kodlama
n611x007

Yanıtlar:


249

Base64 şifreleme değil - bir kodlamadır. Yalnızca yazdırılabilir (metin) karakterleri kullanarak ikili verileri temsil etmenin bir yoludur.

HTTP Temel Kimlik Doğrulaması için wikipedia sayfasındaki şu paragrafa bakın :

Kullanıcı adını ve parolayı Base64 algoritmasıyla kodlamak, onları genellikle çıplak gözle okunamaz hale getirirken, kodlandıkları kadar kolay bir şekilde deşifre edilirler. Güvenlik, kodlama adımının amacı değildir. Bunun yerine, kodlamanın amacı, kullanıcı adı veya parolada bulunan HTTP uyumlu olmayan karakterleri HTTP uyumlu olanlara kodlamaktır.


4
Ayrıca, dizeden 'ikili verileri' almak için ilgili karakter kodlamasının iso-8859-1 olması gerektiği görülmektedir . ( kaynak )
Myobis

60

Normalde şifreleme değil , base64 kodlama olarak adlandırılır ! Base64 kodlamasının güzel yanı, örneğin ASCII olarak 1'ler ve 0'lardan oluşan bir dizeyi yazmaktan çok daha verimli bir şekilde, mevcut karakterlerin yalnızca sınırlı, ortak bir alt kümesini kullanarak (ikili) verileri temsil etmenize izin vermesidir.


6
+1, ancak verileri 1'lerde depolamaya kıyasla, 0'ların akışı çok abartılı. Verileri onaltılık formatta depolamakla karşılaştırmak daha iyidir. Onaltılık x2orijinal akıştan yalnızca daha fazla bayt oluşturacağından ve 1s, 0s - x8kat daha fazla bayt yapar . (Ve Base64, x1.3orijinal bayt dizisinden daha fazla veri oluşturur). Bu nedenle bazen ikili akışı onaltılık dizge olarak kodlamak, bayt miktarını iki katına çıkarmak kabul edilebilir - örneğin, sadece şifre karmasını veritabanında saklamak için.
Agnius Vasiliauskas

30

En crypt ion , şifresini çözmek için bir anahtar (dizi veya algoritma) gerektirir; dolayısıyla "şifreleme" (kök: kriptografi )

En COD ing değiştirir / vardiya / başka bir karakter kodu değiştirir. Bu durumda, olağan veri baytları artık HTTP kullanılarak kolayca temsil edilebilir ve taşınabilir.


5
Şifreleme yalnızca "gizli hale getirmek" anlamına gelir - anahtar tabanlı kriptografi çok yeni bir buluştur. Şifreleme, şifreleme olarak kullanılan bir kodlama biçimidir (yüzlerce yıldır 12 yaşından büyük biri tarafından olmasa da).

2
Yerelde şifreleme, en son şifreleme modlarına, özellikle anahtar tabanlı (genel / özel anahtar) olan bilgisayar şifrelemesine atıfta bulunmak için kullanılır. Doğru olsa da, tarihli bir kelimenin tam anlamıyla bir tanımını belirtmek gereksizdir; aksi takdirde, bugün kullanılan birçok İngilizce kelimenin tarihsel tanımını tartışırsınız. Yerel (ve bazen konuşma dili), kelimelere bağlam ve dolayısıyla tanım veren şeydir.
vol7ron

1
Kulağa kaba geldiğini sanmıyorum; Modern bağlam hakkındaki düşüncenize katılıyorum. Kelimeler ve tanımlar sürekli gelişiyor. Bence "kodla" ve "şifrele" modern bilgi işlemde kesinlikle iki farklı tanıma sahip ve cevabınız farklılıkları özetlemek için iyi bir çaba gösteriyor.
Dan Bechard

Base64 kodlaması, belirsiz hale getirme anlamına gelen bir gizleme biçimidir. Çoğu uygulama için bu, örneğin bir kablo üzerinden gönderilen herhangi bir açık metni karıştırmak olduğu durumlarda yeterli şifrelemedir.
Dominic Cerisano

6
@DominicCerisano: Hayır, base64 kodlaması şifreleme olarak sayılmaz ve umarım bunu hiçbir şeyi korumak için kullanmıyorsunuzdur.
Ry-

19

Günlük dilde, "kod" gizli bir şeydir. Bilim ve mühendislikte kod, basitçe bir şeyin nasıl yazılacağına dair bir anlaşma, bir dizi kuraldır.

Bu kod gizli olabilir . Bu durumda buna şifreleme denir. Ancak genel olarak bir kod gizli değildir. Genetik kodu alın. Bu sadece DNA n dört farklı bazlardan yapılmış olduğunu belirtmektedir -  A, C, Gve Tüç bazı, birlikte alınır ve bu bir amino asit oluşturur. Ayrıca hangi amino asidi oluşturan üç harfin olduğu bir tablo var.

Bu kodun sırrı yok.

Aynı şekilde, Base64 gizli bir kod değildir. Daha ziyade, verileri karakter başına altı bit olarak saklamaya izin veren bir koddur (bu nedenle 64 farklı varlık vardır, yani sistemin "tabanı" 64'tür, tıpkı ondalık sistemimizin tabanı 10 olduğu gibi, 10 farklı varlık vardır. "rakamlar" denir).



17

Base-64 kodlaması, MIME belirtimlerinin bir parçasıdır. Bu bir sağlar nakliye güvenliğine orijinal istemci tarafından kullanılan farklı bir kodlama şeması kullanan bir konak üzerinden geçirilmesine aldığında eğer / çiğnenmiş almazsınız veriler için kodlamayı.

Ara tüplerde çok sayıda farklı ana bilgisayar var ve veri kaybı / karışıklık riski olmadan 7 bit ASCII dışında herhangi bir şey için gerçekten destek alamazsınız.

Örneğin, IBM ana çerçeveleri, EBCDIC adlı bir kodlama kullanır (birçok farklı türde bulunur). Kod noktaları, ASCII tabanlı 'koyucular tarafından kullanılan kod noktalarından tamamen farklıdır - ASCII'de, AZ harfleri 0x41 - 0x5A'dır; EBCDIC'de A - Z harfleri bitişik bir aralık bile değildir: AI harfleri 0xC1 - 0xC9'da, JR harfleri 0xD1 - 0xD9'da ve SZ harfleri 0xE2 - 0xE9'da bulunur.


1

Varsayılan olarak, Köprü Metni Aktarım Protokolü (HTTP) mesajlarındaki mesaj başlığı alanı parametreleri, ISO-8859-1 karakter seti dışındaki karakterleri taşıyamaz.

Kullanıcı adı ve parola uyumsuz karakter kümesi içeriyorsa, HTTP bu metni taşıyamaz. bunu önlemek için, HTTP üzerinden HTTP uyumlu karakter gönderdiğimizden emin olmak için kullanıcı adı ve parolayı base64 ile kodluyoruz. daha fazla bilgi için bu Basic_access_authentication'a bakın

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.