javascript中的哈希函数

hash function in javascript

本文关键字:函数 哈希 javascript      更新时间:2023-09-26

我允许用户上传图片到我的网站。有些图片的名字里有空格,我想完全避免这个。因此,我想对图像的名称进行散列。

有一个哈希函数,javascript自带?我宁愿不写自己的,所以我应该考虑写/获取md5哈希吗?有什么内置的东西我可以用吗?

如果您只是想使字符串web安全,请使用encodeURI或encodeURIComponent,然后使用decodeURI或decodeURIComponent进行解码。

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服务器和客户端都应该有本地支持。

这需要在JavaScript中完成的原因吗?最好是在文件上传后在服务器端计算,然后在操作完成后将其返回给用户。

查看Paj的MD5实现

头:

/*
 * 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.
 */

好吧,如果你必须的话,你可以生成一个slug:

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作为图像文件名。