JavaScript 和asp.net配合编码字符串

     .net 的System.Text.ASCIIEncoding 和System.BitConvertor类配合在服务端加密字符串,客户端使用Javascript解密字符串。代码如下:

<script language="javascript">
 /*
 ==========================================================
 This function helps protect the email address from the evil spam-bots
 that scan web pages for useful data such as (email addresses). 
 Instead of using the data directly, the encoded value is stored in the
 html and decoded when required.
 ==========================================================
 */
 function decode(ServerEncoded)
 {
 // The ServerEncoded parameter is a string that contains the encoded data.
 // Each character in the ServerEncoded parameter has been converted into 
 // a two digit number (hex / base16). This function converts the
 // series of numbers back into the normal form and returns the 
 // decoded string to the client
 // holds the decoded string
 var res = "";
 // go through and decode the full input server encoded string
 for (i=0; i < ServerEncoded.length;)
 {
 // holds each letter (2 digits)
 var letter = "";
 letter = ServerEncoded.charAt(i) + ServerEncoded.charAt(i+1)
 // build the real decoded value
 res += String.fromCharCode(parseInt(letter,16));
 i += 2;
 }
 //return the new decoded string to allow it to be rendered to screen
 return res;
 }
 /*
 ==========================================================
 This function gets a reference to the server encrypted string and
 then decrypts this using the decode() function and sets the
 txtDecrypted value to the value return by the decode() function
 ==========================================================
 */
 function GetEmailAndDecode() {
 //get the table <A class=iAs style="FONT-WEIGHT: normal; FONT-SIZE: 100%; PADDING-BOTTOM: 1px; COLOR: darkgreen; BORDER-BOTTOM: darkgreen 0.07em solid; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" href="#" target=_blank itxtdid="3146774">element</A>
 var txtSvrEncr = document.getElementById('txtServerEncrypted');
 var txtJSDecr = document.getElementById('txtDecrypted');
 txtJSDecr.value = decode(txtSvrEncr.value);
 var txtAllTog = document.getElementById('txtAllTogether');
 txtAllTog.value = decode(txtAllTog.value);
 }
</script>
public partial class _Default : System.Web.UI.Page 
{
 protected void Page_Load(object sender, EventArgs e)
 {
 #region Email Encryption 
 //if javascript is enabled do the encoding
 if (Request.Browser.JavaScript)
 {
  //do the encryption using the raw email
 txtServerEncrypted.Text = System.BitConverter.ToString(
 System.Text.ASCIIEncoding.ASCII.GetBytes(
 (txtRawEmail.Text))).Replace("-", "");
 //do the encryption using the raw email
 txtAllTogether.Text = System.BitConverter.ToString(
 System.Text.ASCIIEncoding.ASCII.GetBytes(
 (txtRawEmail.Text))).Replace("-", "");
 }
 else
 {
 //couldnt find javascript so just use normal email
 txtServerEncrypted.Text = txtRawEmail.Text;
 txtAllTogether.Text = txtRawEmail.Text;
 }
 #endregion
 }
}

具体参见:Simple web based obfuscation

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏游戏杂谈

使用ScriptableObject创建.asset文件

定义为public的变量就存储在xxx.asset中,通过 CommonConfig.Instance.Get 直接获取数据。

17150
来自专栏林德熙的博客

C# GUID ToString GUID 转 int

最近在看到小伙伴直接使用 Guid.ToString ,我告诉他需要使用 Guid.ToString(“N”) ,为什么需要使用 N ,因为默认的是 D 会出现...

83610
来自专栏菩提树下的杨过

Flash/Flex学习笔记(32):播放音乐并同步显示lyc歌词(适用于Silverlight)

题外话:个别朋友总是问我同样的问题,做为一名c#/silverlight程序员为啥还要学flash ? 回 答:看日本片时,就不能对照看欧美的么? 不体会日本的...

22670
来自专栏电光石火

C#解析JSON

使用开源的类库Newtonsoft.Json(下载地址http://json.codeplex.com/)。下载后添加dll引用就能用。 首先添加引用:usin...

31790
来自专栏Java职业技术分享

java爬虫带你爬天爬地爬人生,爬新浪

HttpClient是Apache Jakarta Common下的子项目,可以用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持...

17850
来自专栏LeoXu的博客

org.apache.http.client.methods.HttpPost 两种消息体形式 —— UrlEncodedFormEntity 和 StringEntity

使用 UrlEncodedFormEntity 来设置 body,消息体内容类似于“KEY1=VALUE1&KEY2=VALUE2&...”这种形式,服务端接收...

30520
来自专栏liulun

创建一个简单的HTTP服务(自动查找未使用的端口)

var t = new Thread(new ThreadStart(() => { HttpListe...

20350
来自专栏龙首琴剑庐

Java微信支付快速入门&工具类

快速入门 1、微信支付官方在线API入口: https://pay.weixin.qq.com/wiki/doc/api/index.html 2、微信支付能力...

1.1K120
来自专栏JadePeng的技术博客

使用Mongodb 做对象缓存

mongodb高效的访问速度,用来快速存取数据再合适不过了,缓存神马的,可以用这个的 另外,有的时候,如果仅仅存储几条数据,单独去建立一张表代价太大,这个时候,...

52350
来自专栏个人随笔

C#编写街道管理系统

项目需求: 一、语言和环境A、实现语言 C#B、环境要求 Visual Studio 2012 二、功能要求 现使用.NET WinForms技术为居委会开发...

51660

扫码关注云+社区

领取腾讯云代金券