一個奇怪的問題的位。我有一個網站,其中有一些經典的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