我目前正在進行一個學校項目,部分任務是啓用用戶登錄。因此,我認爲使用簡單的base64編碼並將其轉換爲小寫字母將是非常好的加密方法,因爲base64通常由高位字符和低位字符組成。這裏是一個代表性的代碼:Base64編碼與小寫字母轉換密碼的安全性如何?
set @passwd = 'Password';
set @salt = 'Salt';
set @email = '[email protected]';
INSERT INTO `db_scrumboardtable`.`tb_user` (`mail`, `password`, `nameToDisplay`) VALUES (@email, LOWER(to_base64(sha2(concat(@passwd,@salt),512))) , 'test');
select u.tb_User_id from `db_scrumboardtable`.`tb_user` u where u.mail = @email and u.password = LOWER(to_base64(sha2(concat(@passwd,@salt),512)));
你的問題是什麼? – hagello
Base64可以被任何人撤消。你也可以用純文本存儲它。 –
除了下面指出的重要問題外,正確的用法是'TO_BASE64(UNHEX(SHA2(...)))'。 MySQL中的哈希函數返回它們的十六進制編碼的值,這需要被撤消,否則你有很多浪費的位(實際上等於4:8),因爲你提供的字節數是實際需要的兩倍傳達信息,因此只有每個字節(6個可能的,因爲有64個符號)的3個比特的Base64結果是有意義的。這將進一步簡化逆轉你的「算法」,因爲根據定義,240/256個可能的輸入無效。 –