hMailServer用户密码加密算法

主要的数据库表:

  域名表:hm_domains,这个表保存了服务器中配置的各个域名及其相关属性;

  邮件账号表:hm_accounts,这个表保存了所有的邮件账号的各项信息,如所属域名、密码、邮箱大小等;

  imap服务的目录表:hmimapfolders,这个表保存了 imap 服务的各个目录。默认情况下,每建立一个邮件账户,系统都会为这个用户添加一个 imap 目录(收件箱) 这三个表就是我们自己写管理邮件账户页面时,最常用到的表。其它的表,也很简单,如果需要的话,看一下,很容易看懂。   在表 hmaccounts 中保存的密码,不同的账户是可以使用不同的加密算法来加密的。表中保存密码的字段是:accountpassword,而这个密码所使用的加密算法由后面的一个字段的值来决定,这个字段就是:accountpwencryption。当前这个字段的值决定了密码的不同加密算法,下面是其对应关系:

0 -> 用明码来保存密码,即不对密码进行加密;
1 -> 使用 Blowfish 来加密密码。据介绍,这种加密算法并不安全,和用明码保存密码的安全性相差不大;
2 -> 使用 MD5 加密算法来加密密码;
3 -> 使用 SHA256 加密算法来加密密码。这也是 hMailServer 官方推荐的加密算法

  知道上述内容后,自己写管理用户的界面就非常简单了,要添加一个用户账号,直接往数据库添加一条记录即可。

  当前默认的 hMailServer 的加密算法是:

  随机生成一个6位长的字符串,假设生成的随机字符串是:8et5p9,假设密码是:123456; 将“随机字符串”和“密码”连起来:8et5p9123456; 将连起来的新字符串,用SHA256加密,如:hash(“sha256″,”8et5p9123456″),得到的密文是:2dc34747955a3546b0c71459c4be8b56a998aa32bc0f5e546872157d665d14c1 将“随机字符串”与“SHA256加密后的密文”连起来,得到新密文:8et5p92dc34747955a3546b0c71459c4be8b56a998aa32bc0f5e546872157d665d14c1,这就是保存在数据库表中的密码字段里的值。