Re: 帳號密碼的大小寫
※ 引述《curmathew ()》之銘言:
: 標題: 帳號密碼的大小寫
: 時間: Sat Jul 7 11:52:47 2007
:
: 為什麼許多需要帳號密碼登入的地方
: 帳號打大寫或小寫都可以正常登入
: 密碼卻不行呢?
:
: --
: ※ 發信站: 批踢踢實業坊(ptt.cc)
: ◆ From: 59.105.6.236
: 推 cpt:同一個英文字母的大/小寫, 代表的字元碼是不同的 07/07 12:00
: → cpt:帳號大小寫設定成互通, 只是為了方便, 密碼通常不會這樣設計 07/07 12:01
: → cpt:因為密碼的可用字元數越多, 被猜到的機率就越低 07/07 12:02
: 推 gamer:密碼記錄的不是字元,應該是ASCII碼。帳號記錄的應該是字元 07/07 14:30
: 推 sitos:字元(character?) ASCII? 一般的 ASCII 也是用 character 存 07/07 15:49
: 推 sitos:看不太懂 gamer 寫的意思,現在已經很少用 7 bits 存東西囉 07/07 15:49
: 推 gamer:我的意思是像A帳號是存入A,但是密碼是存入41。 07/07 17:17
: → gamer:然後帳號讓'A'='a',可是密碼是存41。這樣大小寫就會不同 07/07 17:19
: → gamer:我會這樣想是因為系統隨機產生密碼的時候都是一連串亂七八糟 07/07 17:21
: → gamer:的大小寫字母,所以我想會不會是產生出一串數字再轉成字母。 07/07 17:22
基本上現在的字元(character)都是用 8 bits (1 byte) 來儲存。
不管是帳號或者是密碼如果要以明碼儲存,應該都是用一樣的格式,
畢竟直接用 8 bits 儲存最省空間,並別的格式儲存沒有好處。
你說的 0x41(hex) 也就是 65(dec) 存在記憶體中也是佔 8 bits (0~255) ,
而 'A' (character) 存在記憶體也是一樣佔 8 bits ,其實也是存 0x41 ,
事實上 0x41 跟 'A' 在記憶體中是一模一樣,唯一會產生不同的是,
在要顯示出來的時候使用的 format (看是要用 integer 還是 character 顯示)。
不管是帳號或是密碼,字串以明碼方式存在電腦裡,大小寫都是有區分的。
一般帳號作成大小寫不分,還需要經過處理,通常是全部轉成大寫或全部轉成小寫,
再去作比對,這樣不管輸入進去是大小寫意思都一樣。而顯示用的帳號另外紀錄,
這樣使用帳號時還是有原先輸入的大小寫分別,但比對帳號時就不會有。
而密碼通常已經不會以明碼儲存在電腦裡面,現在大多數的作法可能是透過 hash ,
例如 md5 之類的方式,把經過單向編碼的密碼存在電腦裡面,
這樣做主要是避免管理員竊取使用者的密碼,當使用者輸入密碼時,
會把輸入的密碼也作一次 hash 再和正確密碼的 hash 比對,如果一樣,就當作是對。
但因為 hash 本身是多對一的 mapping ,因此可能輸入密碼不對但仍被當作是對,
只是因為一般的 hash 長度都很長,要剛剛好 map 到同一個的機率實在太小。
因為在電腦來看大小寫本來就是不同,因此沒作過特別處理時,大小寫都會有區分。
簡單講,這一切都是取決於系統的設計者要怎麼做,
如果系統設計者不特別處理帳號,要讓大小寫有區別也是可以的。
如果系統設計者要特別處理密碼,讓大小寫沒有區別也是可以的。
只不過現在多數的作法都是帳號不分大小寫(以免混淆),
但是密碼區分大小寫(增加安全性),也可以說是一種自然的趨勢。
: 推 sitos:其實... 應該不會 07/07 18:49
--
我實實在在的告訴你們,一粒麥子不落在地裡死了,
仍舊是一粒,若是死了,就結出許多子粒來。
約翰福音 12:24
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 60.248.178.70
推
07/07 21:44, , 1F
07/07 21:44, 1F
→
07/07 21:50, , 2F
07/07 21:50, 2F
推
07/07 23:37, , 3F
07/07 23:37, 3F
推
07/16 01:58, , 4F
07/16 01:58, 4F
討論串 (同標題文章)