2D JS框架 - DES加密解密 与 Cookie的封装(C#与js互相加密解密)

 

这次实现了JS端的DES加密与解密,并且C#端也能正确解析DES的密文(反之也实现了)

使用的代码如下,非常方便:

<script src="A2D.js" type="text/javascript"></script>
<script language="javascript" type="text/javascript">
var msg = $.DES.encrypt("要研究mysql,最好的资源莫过于源码了,所以本人打算通过调试源码的方式来深入理解mysql的点点滴滴。");
document.writeln(msg);
document.writeln("<br />");
document.writeln($.DES.decrypt(msg));
</script>

输出内容:

385bdba36c0e65dee2ab7fc31fbf7ec43566195c29bf18e4722421397cbbf17a665843bd245226bf8947b59d1609837662b149fb025175d9f76dd9710b165c12c0763ca6d0dd549d8b2b9a2fb6f9a3ffaea19281d92eb84972ad3394198bd5ccb0bfb3be071ff32b
<br />
要研究mysql,最好的资源莫过于源码了,所以本人打算通过调试源码的方式来深入理解mysql的点点滴滴。

C#服务器端使用了js沙箱来运行A2D.js代码,因此能做到加密解密的一致性,如下:

public static class JSSecurity
{
public class MockWindow
{
}
public class MockDocument
{
} public static string MainJSPath { get; set; }
static MockWindow wnd = new MockWindow();
static MockDocument doc = new MockDocument(); public static string Encode(string plainText)
{
using (JavascriptContext context = new JavascriptContext())
{
context.SetParameter("window", wnd);
context.SetParameter("document", doc);
context.SetParameter("message", plainText);
string js = File.ReadAllText(MainJSPath);
js += @"
result = window.$.DES.encrypt(message);
";
context.Run(js);
string result = (string)context.GetParameter("result");
return result;
}
}
public static string Decode(string encryptedText)
{
using (JavascriptContext context = new JavascriptContext())
{
context.SetParameter("window", wnd);
context.SetParameter("document", doc);
context.SetParameter("encryptedMessage", encryptedText);
string js = File.ReadAllText(MainJSPath);
js += @"
result = window.$.DES.decrypt(encryptedMessage);
";
context.Run(js);
string result = (string)context.GetParameter("result");
return result;
}
}
}

真的很简单。

下面来看看Cookie的使用,加密了的,不是明文的,并且服务器端能够正确解析:

 <form action="WebForm1.aspx" method="post">
<input type="button" onclick="javascript:onSetCookie();" value="set cookie(js des encrypt)" />
<br />
<input type="submit" value="Post" />
</form>
<script language="javascript" type="text/javascript">
function onSetCookie() {
$.Cookie.set("账号ID", "aaron.dai");
alert($.Cookie.get("账号ID"));
}
</script>

当click按钮后,设置cookie;点Post按钮后,submit到webform1.aspx,让C#来解析cookie的明文:

protected void Page_Load(object sender, EventArgs e)
{
global::A2D.JSSecurity.MainJSPath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "A2D\\A2D.js"); foreach(string key in Request.Cookies.AllKeys)
{
Response.Write("key:"+key);
Response.Write("<br />value:" + Request.Cookies[key].Value);
Response.Write("<br />=====><br />");
Response.Write("key:" + global::A2D.JSSecurity.Decode(key));
Response.Write("<br />value:" + global::A2D.JSSecurity.Decode(Request.Cookies[key].Value));
}
}

just so easy.

code download

DES加密解密 与 Cookie的封装(C#与js互相加密解密)的更多相关文章

  1. A2D JS框架 - DES加密解密 与 Cookie的封装(C#与js互相加密解密)

    这次实现了JS端的DES加密与解密,并且C#端也能正确解析DES的密文(反之也实现了) 使用的代码如下,非常方便: <script src="A2D.js" type=&qu ...

  2. C# 加密(Encrypt) 解密(Decrypt) 操作类 java与 C# 可以相互加密解密

    public sealed class EncryptUtils { #region Base64加密解密 /// <summary> /// Base64加密 /// </summ ...

  3. RSA 加密 解密 (长字符串) JAVA JS版本加解密

    系统与系统的数据交互中,有些敏感数据是不能直接明文传输的,所以在发送数据之前要进行加密,在接收到数据时进行解密处理:然而由于系统与系统之间的开发语言不同. 本次需求是生成二维码是通过java生成,由p ...

  4. js前端加密,php后端解密(crypto-js,openssl_decrypt)

    来源:https://blog.csdn.net/morninghapppy/article/details/79044026 案例:https://blog.csdn.net/zhihua_w/ar ...

  5. js base64加密,后台解密

    这是为了解决页面发送post请求,传输密码,在页面的控制台可以看到密码的明文,所以先用base64把要传输的密码转换为非明文,然后在后台解密处理. base64encode.js // base64加 ...

  6. js前台加密,java后台解密实现

    参考资料: JS前台加密,java后台解密实现

  7. AES加密解密——AES在JavaWeb项目中前台JS加密,后台Java解密的使用

    一:前言 在软件开发中,经常要对数据进行传输,数据在传输的过程中可能被拦截,被监听,所以在传输数据的时候使用数据的原始内容进行传输的话,安全隐患是非常大的.因此就要对需要传输的数据进行在客户端进行加密 ...

  8. 【转】JS前台加密,java后台解密实现

    因项目需求,需要一些敏感信息进行加密,不能以明文暴露到浏览器. 然后后台进行解密操作 先看一下效果图 未对其加密传输 1.前台JS <script type="text/javascr ...

  9. js base64加密解密

    var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" ...

随机推荐

  1. http层负载均衡之haproxy

    http层负载均衡之haproxy实践篇(一) 方案 上篇文章讲到了负载均衡的相关理论知识,这篇文章我打算讲讲实践方法以及实践中遇到的问题 方案:haproxy http层负载均衡 安装一个hapro ...

  2. WebBrowser控件应用:播放PPT文件

    原文:WebBrowser控件应用:播放PPT文件 一开始想的是用webform来做,用iframe加载文件,把ppt文件另存成htm,然后播放. 可是后来发现,的程序不大容易控制,所以改用winfo ...

  3. mysql 使用记号

    1. 避免重复入库的插入记录方法 向一个数据库中插入且在未存在的情况下插入一行记录.若有主键可以区分则可以使用 replace into 方法, 单偏偏很多时候数据库设计者会设计自增主键,replac ...

  4. Linux server关闭自己主动

    公司linux server发生错误.mysql server没有理由关闭,我找不到理由.Version: '5.6.13-enterprise-commercial-advanced' socket ...

  5. 关于session_start()这个问题

    关于session_start()这个问题,其实网上很多解决的方法,论坛也好多人回答这类的问题, 现在的状况是依然有警告提示Warning: session_start() [function.ses ...

  6. Ubuntu Ruby On Rails安装和配置

    在这篇文章中ubuntu通过rvm安装ruby和rails.步借鉴了官方网站和网上信息,这里给大家分享. 1. 安装mapapis公钥: gpg --keyserver hkp://keys.gnup ...

  7. C语言字符串操作函数集

    1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长度 ...

  8. 数据库备份还原工具EMS SQL Angel for SQL Server发布1.3版本

    EMS公司,是专门从事企业数据库以及内置于多层次客户服务器结构自动化开发.其EMS SQL Angel for SQL Server工具,便是SQL Servers数据库数据备份还原工具,并且还能使用 ...

  9. 再谈ORACLE CPROCD进程

    罗列一下有关oprocd的知识点 oprocd是oracle在rac中引入用来fencing io的 在unix系统下,假设我们没有採用oracle之外的第三方集群软件,才会存在oprocd进程 在l ...

  10. 在Win7中安装程序集到GAC

    原文:在Win7中安装程序集到GAC 微软为提高系统安全,自Vista推出后,在Windows系统中加入了一个新的东东——UAC(User Account Control),这样一个新的技术使得许多操 ...