登录加密系统PHP/MySQL

登录加密系统PHP/MySQL,php,mysql,encryption,Php,Mysql,Encryption,我正在用PHP5.3和MySQL创建一个网站。我需要小费。今天最好的加密解密系统是什么?我知道Sha1和MD5被黑了。。。如果有人知道一个安全的系统,可以帮我举个例子来使用它吗? 谢谢 对于一个简单的哈希算法,请看一看哈希算法家族。这些算法没有成功发布的攻击,当您使用salt(即与密码结合的额外数据位,然后进行散列)时,您将创建一个非常安全的密码存储系统 今天最好的加密解密系统是什么 您已经列出了散列算法,这是一种方法。也就是说,它们不能被解密。如果您想使用一个好的算法对值进行加密和解密,请查看

我正在用PHP5.3和MySQL创建一个网站。我需要小费。今天最好的加密解密系统是什么?我知道Sha1和MD5被黑了。。。如果有人知道一个安全的系统,可以帮我举个例子来使用它吗?
谢谢

对于一个简单的哈希算法,请看一看哈希算法家族。这些算法没有成功发布的攻击,当您使用salt(即与密码结合的额外数据位,然后进行散列)时,您将创建一个非常安全的密码存储系统

今天最好的加密解密系统是什么


您已经列出了散列算法,这是一种方法。也就是说,它们不能被解密。如果您想使用一个好的算法对值进行加密和解密,请查看。对于256位密钥大小,这是加密和安全性的当前标准。

“加密”和“解密”与哈希不同,这才是您真正想要的!PHP5.5将为使用bcrypt的强大密码哈希算法提供一个好的、简单的API,bcrypt是迄今为止最强大的密码哈希算法之一。在当前PHP版本中以向前兼容的实现启用此API。

您听说它们被“黑客”攻击的原因是因为rainbow表已成为“破解”加密密码(未加密密码)的可行且流行的方法。如果您想了解更多信息,快速搜索MD5 Rainbow表或相关搜索其他加密算法将提供许多有用的信息链接

除使用单向加密算法(如MD5、SHA1等)加密密码外,存储密码最安全的方法是使用salt。以下是实现salt密码系统的步骤:

注意:这些只是几个示例方法,它们向您展示了如何使用随机salt来加密密码。为了简单起见,我省略了加密。如果您不知道如何使用sha1()、md5()或相关函数加密字符串,那么这对您没有多大帮助

在数据库中安全存储(加密)加密密码 您需要什么:

INSERT INTO `userbase`(`user_name`, `user_pass`, 
                       `user_salt`, `user_email`)
VALUES(:name, :pass, :salt, :email);
  • PHP(最好是5.3+版本!)
  • SQL数据库(例如MySQL、MariaDB、PostgreSQL、Oracle、DB2等)
  • 能够从PHP(mysqli、PDO等)的SQL数据库中插入/检索行
  • 能够在PHP中使用基本加密算法函数(如sha1()、md5()等)
1.创建用户数据库并编写查询: *注意:由于本教程使用SHA1,用户密码长度为40个字符,此数字将随加密算法而变化*

CREATE TABLE userbase (
  user_id    int(10)    NOT NULL    UNSIGNED    AUTO_INCREMENT    PRIMARY KEY,
  user_name    varchar(18)    NOT NULL    UNIQUE KEY,  
  user_pass    char(40)    CHARACTER SET utf8    COLLATE ut8_bin    NOT NULL.
  user_salt    char(10)    NOT NULL    UNIQUE KEY,
  user_email    varchar(70)    NOT NULL    UNIQUE KEY
) ENGINE=innodb,CHARACTER SET=utf8, COLLATE=utf8_general_ci;

查询:

INSERT INTO `userbase`(`user_name`, `user_pass`, 
                       `user_salt`, `user_email`)
VALUES(:name, :pass, :salt, :email);
2.编写注册脚本
授权步骤:

INSERT INTO `userbase`(`user_name`, `user_pass`, 
                       `user_salt`, `user_email`)
VALUES(:name, :pass, :salt, :email);
  • 在变量中存储用户提供的用户/密码(来自登录)
  • 从数据库中检索密码/salt
  • 根据数据库记录验证密码
  • 设置会话变量

3.写入授权脚本: 其他选择: 您可能有兴趣研究具有本机盐渍功能的MCRYPT包。Mcrypt不是现成的,而是PHP扩展社区库的一部分。Mcrypt提供了许多散列算法和本机的盐析机制


有关mcrypt的更多信息,请访问:

MD5未被黑客攻击。它仍然不能以传统的方式“不加密”,但是有一些大型数据库使用MD5加密字符串进行哈希比较。此外,MD5从未真正打算成为密码加密功能。这是一种检查文件、字符串或其他数据类型有效性的方法。无论散列算法如何,都应使用salt。@PhilCross如果要签出bcrypt。例如,见。与其说是你使用的哈希,不如说是你使用它的方式。谷歌搜索“密码哈希最佳实践”-你可能也想加强cookie处理。@PeeHaa在评论中指出,那篇博文完全误解了彩虹表的性质以及它们与暴力攻击的关系。如今,直接攻击的问题比计算已知哈希值的彩虹表以通过暴力查找密码的能力要少。@Chris我发布了一个示例,详细说明了如何使用bcrypt来添加密码函数,但这是一种方法。有了这个,我可以加密,但我不能正确解密?因为散列是一个单向操作,是不可逆的。这正是存储密码时需要的;您不想承担存储实际密码的责任@deceze I发布了一种实现基本盐渍的方法algorithm@Charles好啊注意,基于bcrypt的散列(包括salt)要比未拉伸的SHA1散列好得多。SHA1速度太快,无法抵御严重的暴力攻击。我是否正确地看到,在密码进入数据库之前,您从未对其进行哈希运算@deceze-我正在演示如何加密密码,希望用户自己知道如何加密。@deceze您显然没有阅读前置条件和后置条件,是吗