我目前正在进行一个学校项目,部分任务是启用用户登录。因此,我认为使用简单的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个可能的输入无效。 –