我正在開發一個ASP.NET MVC應用程序,我想在服務器上使用C#加密一個短字符串,並將它發送到客戶端。在.NET和Javascript中的簡單字符串加密
然後在客戶端,它將通過Javascript代碼進行解密。
有關如何實現這一點的任何想法?
你知道一個簡單的加密算法(不必是防彈保護),可以從C#很容易地轉換爲JavaScript或反之亦然?
注:我能做到這一點完全用C#和通過Ajax做解密,但我不希望這樣做,因爲我想減少網站的流量儘可能地。
我正在開發一個ASP.NET MVC應用程序,我想在服務器上使用C#加密一個短字符串,並將它發送到客戶端。在.NET和Javascript中的簡單字符串加密
然後在客戶端,它將通過Javascript代碼進行解密。
有關如何實現這一點的任何想法?
你知道一個簡單的加密算法(不必是防彈保護),可以從C#很容易地轉換爲JavaScript或反之亦然?
注:我能做到這一點完全用C#和通過Ajax做解密,但我不希望這樣做,因爲我想減少網站的流量儘可能地。
System.Security.Cryptography有一堆對稱(和非對稱)加密算法可以使用。 (對於一些超安全使用aes)
你應該能夠找到匹配的Javascript實現大多數(這裏有幾個AES的實現在JS)
注意:如果您打算使用基於私鑰的加密,請記住,您的網頁將嵌入密鑰,這意味着這一切都會變得毫無意義。能夠訪問頁面的人可以進行解密,充其量只會讓屏幕刮板的生命變得更加困難。如果讓屏幕刮板更難以生存是你的目標,你可以使用一個模糊算法。任何微不足道的實現對於沒有javascript引擎的屏幕刮板來說都是非常不切實際的:
例如,
function samObsfucated()
{
return("s" + "a" + "m" + "@" + "s" + "." + "com");
}
然後onload用這些函數的輸出填充您的電子郵件字段。
的Javascript加密對存儲密碼的用戶ALA clipperz
您可以使用HTTPS加密客戶端和服務器之間的所有流量嗎?這可能是您找到的最安全的方法。
就可能工作的最簡單的事情而言,似乎您想要一種簡單的混淆形式,而不是任何真正安全的形式。
Rot-13可能已經足夠,只要您使用ASCII電子郵件地址處理觀衆。如果你需要支持Unicode,那麼你可能需要一些稍微複雜的東西。
這聽起來像你想的混淆或編碼,不加密。 Base64 encoding應該在這裏工作得很好。結果看起來不像電子郵件地址,編碼過程很快。
在C#中,你可以使用:
string emailAddress = "[email protected]";
string encoded = Convert.ToBase64String(Encoding.UTF8.GetBytes(emailAddress));
而且你可以使用這個JavaScript函數將其解碼:
function Base64Decode(encoded) {
var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/=";
var output = "";
var chr1, chr2, chr3;
var enc1, enc2, enc3, enc4;
var i = 0;
do {
enc1 = keyStr.indexOf(encoded.charAt(i++));
enc2 = keyStr.indexOf(encoded.charAt(i++));
enc3 = keyStr.indexOf(encoded.charAt(i++));
enc4 = keyStr.indexOf(encoded.charAt(i++));
chr1 = (enc1 << 2) | (enc2 >> 4);
chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
chr3 = ((enc3 & 3) << 6) | enc4;
output = output + String.fromCharCode(chr1);
if (enc3 != 64) {
output = output + String.fromCharCode(chr2);
}
if (enc4 != 64) {
output = output + String.fromCharCode(chr3);
}
} while (i < encoded.length);
return output;
}
C#應用程序編碼字符串[email protected]
爲YWJjQGV4YW1wbGUuY29t
,和JavaScript版本將YWJjQGV4YW1wbGUuY29t
解碼回[email protected]
。
我寧可不使用HTTPS,因爲這只是一個簡單的「小冊子」網站,而我正在加密的所有內容都是電子郵件地址,以防止垃圾郵件。 我不想經歷設置HTTPS的麻煩。 – Jonathan 2009-04-14 04:32:18