# 加密與編碼的差異 現階段的開發者因安全性考量無法得知使用者的密碼 已不再於資料庫使用明碼儲存密碼 而是暗碼,編碼(85%),加密(網路封包傳輸,區塊鏈) 所以重設密碼的部分 已更改為發出一個資訊 讓使用者自行重新設定 編碼與加密的差異 加密<===>解密 (馬賽克) 混淆資訊 mack->amaaacak 可被解開 如例子中在原文每個字前面加上a 使用密鑰.演算法等方式產生不同加密效果 *之所以不太把密碼使用加密技術,是因為可以被聯立方程式破解原文 只要獲得夠多的加密樣本 就可以從中找出規律 將內容還原 編碼<=/=>解碼 (編碼不可解碼) 將mack放進多個容器中的其中一個,放哪一個容器 是依照不同的演算邏輯產生不同的結果 呈現給外界看時 只會看到容器(一串經計算後產生代碼) 不會看到mack本體且僅能呈現外部的代碼, 無法將容器破壞或倒出獲得內容mack,只要能還原 就是被歸類為加密 而不是編碼 編碼無法還原的原因 : 假設經過演算後mack產生了一個容器 該容器有128個字元 但僅會保留前面幾個字元 作為編碼(裝內容的容器), 然後去除後面剩下多的字元,因已不是原本的字元,而是經過刪減的破碎字元所以無法有足夠的資訊去還原 推算 原本的內容是什麼 可以被用作為存在資料表的密碼的原因 : 只要使用的是同一套演算法 再次把相同的內容 如mack 放入時 會產生一樣的結果, 雖然意味著人無法復原解析其內容 但是該演算法是有條理的分類出代號, 相同的使用者密碼會產生相同的編碼, 所以可以用該編碼在資料庫儲存密碼 當使用者登入時輸入的密碼 經過演算法 產生的編碼 比對 資料庫儲存的編碼 使其登入 這個登入動作不會 使用密碼本體比對資料, 而是使用密碼產生的編碼 去與資料表的編碼比對 user:mack=>演算=>(mack=編碼ABC)=(資料表內容 編碼ABC)=>登入成功 主要為 : 加密一定可以解密 , 編碼的東西不能被還原 所以目前許多網站使用一串亂碼作為臨時密碼 讓使用者登入後 去改密碼 是因為編碼無法被還原 資料表內存的也都是編碼 所以無法回覆使用者 密碼是什麼 通常就會寄出一份臨時密碼 使用者登入後 到網站輸入新的密碼 產生新的編碼 將新的編碼更新到資料表的密碼欄位上 --------------------------------------------- 編碼 可能性的組合 要夠多 16 32 64 128位元編碼 才能有足夠的唯一性 --------------------------------------------- 區塊鏈 需求 編碼與加密的優點 編碼的唯一性 加密的可還原 --------------------------------------------- 其他 : 加鹽密碼