【问题标题】:How are zencart passwords encrypted in Sql Server?Sql Server 中的 zencart 密码是如何加密的?
【发布时间】:2012-05-03 11:55:25
【问题描述】:

我已经在我的网络服务器上设置了一个 zencart,并且管理功能的密码在与 zencart 关联的 sql 数据库中被加密(或以某种方式混淆) - 谁能告诉我这种加密的程度?我想知道设法获得数据库的人是否能够访问数据库密码部分中的数据,或者我是否会受到保护,以防止数据的特定部分通过其加密公开。

如果是加密的,它是如何加密的,解密的难易程度如何?

这是一个默认的 zen 购物车设置。

亲切的问候

【问题讨论】:

  • 这些真的是 SQL 登录/帐户的密码吗?还是这些 zencart 应用程序密码?
  • Zen Cart 应用程序密码存储在 SQL 数据库中(据我所知)

标签: security zen-cart password-storage


【解决方案1】:

ZenCart 中的密码存储为为 salt + 密码创建的 MD5 哈希。 SQL 数据库中存储的格式是 MD5Hash:Salt。

在创建哈希之前对密码进行加盐可防止有权访问用户表的用户在彩虹表的帮助下对密码进行反向工程。所以,你是安全的,但如果使用 SHA-2 算法可能会更好。

使用 PHP,您可以使用以下代码创建用于存储的数据:

$hashedPassword = md5($salt.$password).':'.$salt;

【讨论】:

  • 谢谢!你显然知道很多。你能告诉我他们是否可以在其他地方获得这种“盐”并使用它来反转加密吗? PS 你说 MD5 不如 SHA-2 安全,有人用暴力破解它作为盐渍 MD5 需要多长时间?
  • 盐的目的是防止用户使用彩虹表查找密码。 Rainbowtables 实际上是一个大型数据库,其中包含为大量字符组合预先计算的哈希值。在计算之前用随机字符对密码进行加盐时,彩虹表将毫无用处。盐是不安全的,并且存储在 ZenCart 数据库中的冒号之后与哈希存储在同一列中(读取冒号分隔)。请参阅en.wikipedia.org/wiki/MD5#Collision_vulnerabilities 了解为什么 MD5 不如 SHA-2 算法安全。
  • 谢谢你,我在过去几个小时里读到的也证实了你所说的。有没有办法保护 Zen Cart 数据库中的盐/另一种保护密码的方法,还是程序的限制?
  • PS 纠正我自己说“反向加密”的地方我错了,我应该说反向哈希,因为哈希不是加密。我现在意识到哈希只是一种方式。
  • 我认为没有理由加密盐,因为盐的目的是防止使用彩虹表来检索密码。当您在 ZenCart 中检查输入的密码时,您将检索密码列,在冒号后面取字节(即盐),并在输入的密码前添加盐并计算 MD5 哈希。如果计算出的哈希与存储的哈希(冒号前的字节)匹配,则输入的密码正确,否则输入错误的密码。
【解决方案2】:

较新版本的 ZenCart 使用带有随机盐的 SHA256 散列算法(尽管由于某些未知原因,该变量被称为“密码”):

function zen_encrypt_password_new($plain)
{
  $password = '';
  for($i = 0; $i < 40; $i ++) {
    $password .= zen_rand();
  }
  $salt = hash('sha256', $password);
  $password = hash('sha256', $salt . $plain) . ':' . $salt;
  return $password;
}

(从版本 1.5.4 - includes/functions/password_funcs.php

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-15
    • 1970-01-01
    • 1970-01-01
    • 2014-12-03
    • 1970-01-01
    • 2013-12-16
    • 2011-01-10
    • 1970-01-01
    相关资源
    最近更新 更多