繁体   English   中英

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

[英]Simple XOR a message (Javascript/Tcl)?

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

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

有什么方法可以使用简单XOR或任何其他方法轻松实现? (示例将不胜感激)

我在C / Python / .NET / Java中找到了一些示例,但是在JavaScript和Tcl中却没有。

遗憾的是,不能选择使用SSL。

如果不是ssl选项,则建议使用以下方案,许多站点都使用该方案代替SSL:

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

这是有关如何使用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]

superNobody,

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

与其使用Javascript对密码进行编码,然后使用Tcl对密码进行解码以与数据库进行比较,您应该考虑使用Javascript进行SHA1哈希处理,并将SHA1哈希值存储在数据库中。

javascript中有SHA1哈希函数的几个可用示例(仅Google'sha1 javascript')。 tcllib Tcl库具有SHA1支持。

如HaiVu所述,您还应该考虑散列/存储不只是直接的密码散列,而应使用SHA1(用户名+网站名称+密码)之类的东西。 您可以使用Javascript在客户端上进行计算,并将其存储在数据库中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM