简单的异或消息(Javascript/Tcl)?

发布于 2024-09-14 00:06:31 字数 266 浏览 7 评论 0原文

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

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

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

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

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

I need the username/password to be scrambled at the client-side before sending it over via HTTP GET/POST. And the server will decode it with Tcl, before the checks against database.

Currently I'm thinking about using JavaScript for the client-side. Java Applet will also do.

Is there any way, that I can easily achieve it, using Simple XOR or any other methods? (Examples would be much appreciated)

I've found the few samples in C/Python/.NET/Java... But not in JavaScript and Tcl.

SSL is not an option to use, sadly.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

心碎的声音 2024-09-21 00:06:31

如果 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]

If ssl is not an option, then I suggest the following scheme, which many sites use instead of SSL:

  1. On the client side, combine the user name and password, then calculate a hash from it (MD5 is a popular choice).
  2. Send the user's name and hash over to the server
  3. On the server side, retrieve the password for that user from the database.
  4. From the user name and password, calculate the hash and compare it with the client's hash. If the two match, then the passwords match.
  5. For added security, add a little random text to the user+password mix. This random text, AKA the "salt", must be known on both the client and server sides.

Here is a suggestion on how to calculate the hash using MD5:

package require md5

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

How to use it:

set user "johnny"
set password "begood2mama"
set salt "myDog_is_meaner_than_yourDog"

set hash [calculateHash $user $password $salt]
强者自强 2024-09-21 00:06:31

superNobody,

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

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

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

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

superNobody,

You should consider alternatives to storing plain-text passwords in the database. See:

Instead of encoding the password in Javascript, then decoding the password in Tcl to compare with the database, you should consider SHA1 hashing in Javascript, and storing SHA1 hashed values in the database.

There are several available examples of a SHA1 hash function in javascript (just Google 'sha1 javascript'). The tcllib Tcl library has SHA1 support.

As HaiVu mentioned, you should also consider hashing / storing more than just a straight password hash, but instead use something like SHA1( username + websitename + password ). You can calculate this on the client in Javascript, and store it in the db.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文