简单的XOR消息(Javascript / Tcl)?

时间:2010-08-10 03:26:32

标签: javascript tcl encryption-symmetric

在通过HTTP GET / POST发送之前,我需要在客户端对用户名/密码进行加扰。在对数据库进行检查之前,服务器将使用Tcl对其进行解码。

目前我正在考虑在客户端使用JavaScript。 Java Applet也可以。

有没有办法,我可以使用Simple XOR或任何其他方法轻松实现它? (非常感谢例子)

我在C / Python / .NET / Java中找到了一些样本......但不是在JavaScript和Tcl中。

遗憾的是,SSL不是一个可供使用的选项。

2 个答案:

答案 0 :(得分:1)

如果ssl不是一个选项,那么我建议使用以下方案,许多网站使用该方案而不是SSL:

  1. 在客户端,结合用户名和密码,然后从中计算哈希值(MD5是一种流行的选择)。
  2. 将用户名称和哈希值发送到服务器
  3. 在服务器端,从数据库中检索该用户的密码。
  4. 从用户名和密码中,计算哈希值并将其与客户端的哈希值进行比较。如果两者匹配,则密码匹配。
  5. 为了增加安全性,请在用户+密码组合中添加一些随机文本。这个随机文本,即“盐”,必须在客户端和服务器端都知道。
  6. 以下是关于如何使用MD5计算哈希值的建议:

    package require md5
    
    proc calculateHash {user password salt} {
        return md5:md5 -hex "$user:$salt:$password"
    }
    

    如何使用它:

    set user "johnny"
    set password "begood2mama"
    set salt "myDog_is_meaner_than_yourDog"
    
    set hash [calculateHash $user $password $salt]
    

答案 1 :(得分:1)

superNobody,

您应该考虑在数据库中存储纯文本密码的替代方法。参见:

不是在Javascript中对密码进行编码,而是在Tcl中解码密码以与数据库进行比较,您应该在Javascript中考虑SHA1散列,并在数据库中存储SHA1散列值。

javascript中有几个可用的SHA1哈希函数示例(只是谷歌'sha1 javascript')。 tcllib Tcl库支持SHA1。

正如HaiVu所提到的,你还应该考虑散列/存储不只是一个直接的密码哈希,而是使用类似SHA1(用户名+网站名+密码)的东西。您可以在Javascript中在客户端上计算它,并将其存储在db。