javascript中的哈希函数

时间:2011-08-23 22:34:36

标签: javascript hash

我允许用户将图片上传到我的网站。其中一些图像在名称和内容中有空格,我想完全避免这种情况。因此,我想哈希图像的名称。

是否有javascript附带的哈希函数?我宁愿不写自己的,所以我应该考虑编写/获取md5哈希?是否有可以使用的内置内容?

4 个答案:

答案 0 :(得分:1)

如果您想让字符串保持网络安全,请使用encodeURIencodeURIComponent,然后根据需要使用decodeURIdecodeURIComponent进行解码。

e.g。

var s = '*&@^# %@$!*)) jja;s kldfj';
var eS = encodeURIComponent(s); // *%26%40%5E%23%20%25%40%24!*))%20jja%3Bs%20kldf
alert(decodeURIComponent(eS));  // *&@^# %@$!*)) jja;s kldf

使用中的每个Web服务器和客户端都应具有本机支持。

答案 1 :(得分:0)

请参阅此MD5 Implementation by Paj

部首:

/*
 * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
 * Digest Algorithm, as defined in RFC 1321.
 * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009
 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
 * Distributed under the BSD License
 * See http://pajhome.org.uk/crypt/md5 for more info.
 */

答案 2 :(得分:0)

是否有理由需要在JavaScript中完成此操作。一旦文件上传,在服务器端计算这个可能会更好,然后在操作完成后将其返回给用户。

答案 3 :(得分:0)

好吧,如果你必须,你可以生成一个slu ::

function string_to_slug(str) {
  str = str.replace(/^\s+|\s+$/g, ''); // trim
  str = str.toLowerCase();

  // remove accents, swap ñ for n, etc
  var from = "àáäâèéëêìíïîòóöôùúüûñç·/_,:;";
  var to   = "aaaaeeeeiiiioooouuuunc------";
  for (var i=0, l=from.length ; i<l ; i++) {
    str = str.replace(new RegExp(from.charAt(i), 'g'), to.charAt(i));
  }

  str = str.replace(/[^a-z0-9 -]/g, '') // remove invalid chars
    .replace(/\s+/g, '-') // collapse whitespace and replace by -
    .replace(/-+/g, '-'); // collapse dashes

  return str;
}

但是,我认为其他海报是正确的,说你应该在服务器端这样做。 我唯一不同的想法是使用Guid作为图像文件名。