Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security 如何在Sql Server中加密zencart密码?_Security_Zen Cart_Password Storage - Fatal编程技术网

Security 如何在Sql Server中加密zencart密码?

Security 如何在Sql Server中加密zencart密码?,security,zen-cart,password-storage,Security,Zen Cart,Password Storage,我已经在我的web服务器上设置了一个zencart,并且管理功能的密码在与zencart关联的sql数据库中进行了加密(或以某种方式进行了模糊处理)——有人能告诉我这种加密的程度吗?我想知道,如果有人设法掌握了数据库,是否能够访问数据库密码部分的数据,或者我是否能够通过加密防止数据的特定部分公开 如果它是加密的,那么它是如何加密的,以及他们解密它有多容易 这是一个默认的禅宗车设置 ZenCart中的密码存储为为salt+密码创建的MD5哈希。存储在SQL数据库中的格式是MD5Hash:Salt

我已经在我的web服务器上设置了一个zencart,并且管理功能的密码在与zencart关联的sql数据库中进行了加密(或以某种方式进行了模糊处理)——有人能告诉我这种加密的程度吗?我想知道,如果有人设法掌握了数据库,是否能够访问数据库密码部分的数据,或者我是否能够通过加密防止数据的特定部分公开

如果它是加密的,那么它是如何加密的,以及他们解密它有多容易

这是一个默认的禅宗车设置


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

在创建散列之前添加密码可以防止访问用户表的用户在rainbow表的帮助下反向生成密码。因此,您是安全的,但如果使用SHA-2算法,可能会更好

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

$hashedPassword=md5($salt.$password)。“:”.$salt


较新版本的ZenCart将SHA256哈希算法与随机salt一起使用(尽管出于未知原因,该变量被称为“密码”):

函数zen\u encrypt\u password\u new($plain)
{
$password='';
对于($i=0;$i<40;$i++){
$password.=zen_rand();
}
$salt=hash('sha256',$password);
$password=hash('sha256',$salt.$plain)。':'.$salt;
返回$password;
}

(来自1.5.4版-
包括/functions/password\u funcs.php

谢谢!你对这件事很清楚。你能告诉我他们是否能在其他地方找到这个“盐”并用它来反向加密吗?PS:你说MD5不如SHA-2安全,用暴力破解它需要多长时间?SALT的目的是防止用户使用rainbowtables查找密码。Rainbowtables实际上是一个大型数据库,其中包含大量字符组合的预计算哈希。当在计算前用随机字符添加密码时,彩虹表将毫无用处。盐是不安全的,在与散列存储在同一列中的冒号之后存储在ZenCart数据库中(读取冒号分隔)。有关为什么MD5不如SHA-2算法安全的信息,请参阅。谢谢,我在过去几个小时里读到的内容也证实了您所说的。有没有办法保护Zen Cart数据库中的salt/另一种保护密码的替代方法,或者是程序的限制?PS纠正我自己说的“反向加密”我错了,我应该说反向哈希,因为哈希不是加密。我现在意识到散列只是一种方式,我认为没有理由对salt进行加密,因为salt的目的是防止使用彩虹表来检索密码。当您在ZenCart中检查输入的密码时,您将检索密码列,在冒号(即salt)后提取字节,并在输入的密码之前添加salt,并计算MD5哈希。如果计算的哈希值与存储的哈希值(冒号前的字节)匹配,则输入的密码是正确的,否则输入的密码是错误的。这些密码真的是SQL登录/帐户的密码吗?或者这些是zencart应用程序密码?zencart应用程序密码存储在SQL数据库中(据我所知)
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;
}