一个奇怪的问题的位。我有一个网站,其中有一些经典的ASP页面,以及其他的ASP.net。用C#随机数匹配一个经典的ASP随机数
我有一个缓存他们的gravatar图像的脚本。这是托管在一个使用Cookie的域,在以下位置之一:
http://static1.scirra.net
http://static2.scirra.net
http://static3.scirra.net
http://static4.scirra.net
当一个页面请求我ASP.net网站的gravatar,它通过这个功能,随机分配到一个静态的服务器:
/// <summary>
/// Returns the static url for gravatar
/// </summary>
public static string GetGravatarURL(string Hash, int Size, int AuthorID)
{
Random rndNum = new Random(AuthorID);
int ServerID = rndNum.Next(0, 4)+1;
string R = "//static" + ServerID.ToString() + ".scirra.net/avatars/" + Size + "/" + Hash + ".png";
return R;
}
功能在我经典ASP部分网站的是:
function ShowGravatar(Hash, AuthorID)
Dim ServerID
Randomize(AuthorID)
ServerID = Int((Rnd * 4) + 1)
ShowGravatar = "//static" & ServerID & ".scirra.net/avatars/" & intGravatarSize & "/" & Hash & ".png"
end function
它工作正常,它在用户ID上播种,然后分配一个静态服务器来服务他们的头像。唯一的问题是,C#和经典ASP RNG的输出结果不同!这对于缓存来说并不是最佳选择,因为同一图像在多达2个不同的域上提供。
任何简单的方法呢?
作为一个旁注:请不要告诉人们你不会发布他们的电子邮件,然后使用gravatar。许多网站以这种方式对他们的用户说谎。 – CodesInChaos
@Codeinchaos,你是什么意思?哈希基本上是匿名的,不是吗? –
许多电子邮件地址都是低熵的,可以猜到。例如,我设法从gravatar hash中获得SO的20%以上的电子邮件地址,但计算能力更强,电子邮件生成算法更好,则应该有更高的百分比。 – CodesInChaos