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

问题描述:

我已经在我的web服务器上设置了一个zencart,并且在与zencart相关的sql数据库中对管理函数的密码进行了加密(或以某种方式进行了模糊处理) - 任何人都可以告诉我这种加密的程度吗?我想知道设法获取数据库的人是否能够访问数据库的密码部分中的数据,或者我是否会受到保护,以防止数据的特定部分通过其加密而变为公共。在Sql Server中如何加密zencart密码?

如果它被加密,它是如何加密的,它们多容易被解密?

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

亲切的问候

+0

这些是SQL登录帐户的真正密码吗?还是这些zencart应用程序密码? – RBarryYoung 2012-04-22 19:53:44

+0

Zen Cart应用程序密码存储在SQL数据库(据我所知) – 2012-04-23 00:27:41

密码在ZENCART被存储作为用于盐+口令创建的MD5哈希值。存储在SQL数据库中的格式是MD5Hash:Salt。

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

使用PHP,你可以用这个代码存储创建数据:

$ hashedPassword = MD5($盐$密码)。 ':' $盐。

+0

谢谢!你很清楚这件事。你能告诉我他们是否可以在其他地方掌握这种“盐”,并使用它反转加密? PS你说MD5并不像SHA-2那么安全,需要多久才能有人用蛮力解密它作为盐腌的MD5? – 2012-04-22 19:05:48

+0

盐的目的是为了防止用户使用rainbowtables查找密码。实际上,Rainbowtables是一个大型数据库,预先计算了大量字符组合的哈希值。在计算之前用随机字符腌制密码时,彩虹表将毫无用处。盐不安全,并且在与散列相同列中的冒号存储在ZenCart数据库中(以冒号分隔)。请参阅http://en.wikipedia.org/wiki/MD5#Collision_vulnerabilities,以获取有关MD5为何不如SHA-2算法安全的信息。 – 2012-04-22 19:26:45

+0

谢谢你,我在过去几个小时里读到的内容证明了你的话。有没有一种方法可以保护Zen Cart数据库中的盐/保护密码的另一种方法,或者是程序的限制吗? – 2012-04-22 23:09:52

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