Re: 帳號密碼的大小寫

看板ask-why作者 (麥子)時間17年前 (2007/07/07 19:11), 編輯推噓3(301)
留言4則, 4人參與, 最新討論串2/2 (看更多)
※ 引述《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
感謝原po還有上面推文的解說XD
07/07 23:37, 3F

07/16 01:58, , 4F
07/16 01:58, 4F
文章代碼(AID): #16ZtJYeu (ask-why)
文章代碼(AID): #16ZtJYeu (ask-why)