A2D 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
A2D JS框架 - DES加密解密 与 Cookie的封装(C#与js互相加密解密)的更多相关文章
- DES加密解密 与 Cookie的封装(C#与js互相加密解密)
2D JS框架 - DES加密解密 与 Cookie的封装(C#与js互相加密解密) 这次实现了JS端的DES加密与解密,并且C#端也能正确解析DES的密文(反之也实现了) 使用的代码如下,非常方 ...
- JS框架
s框架就是将常用的方法进行封装,方便调取使用.一个框架是一个可复用的设计构件,它规定了应用的体系结构,阐明了整个设计.协作构件之间的依赖关系.责任分配和控制流程,表现为一组抽象类以及其实例之间协作的方 ...
- layui.js框架的启发
最近做前台设计的MM,应用了layui.js框架,是一个可以按模块加载的js框架,可以实现UI上的一些效果,比如"手风琴折叠"面板.我看了下源码,抽出了其框架,应用到公司的项目中, ...
- javascript JS CryptoJS DES加解密CBC模式与C#DES加解密相同互通
我们只知道不同的语言解密要相互通用,就需要遵循相同的加密方式,然而在具体做技术预研的时候,就发现会遇到很多问题,网上找的资料也是比较片面,所以我踩了坑,并且把解决方案和相关资料源码提供出来,给需要的朋 ...
- AES加密解密——AES在JavaWeb项目中前台JS加密,后台Java解密的使用
一:前言 在软件开发中,经常要对数据进行传输,数据在传输的过程中可能被拦截,被监听,所以在传输数据的时候使用数据的原始内容进行传输的话,安全隐患是非常大的.因此就要对需要传输的数据进行在客户端进行加密 ...
- A2D JS框架
写了个微型JS框架 主要实现了:showDialog.noConflict.定位元素.event绑定功能 使用端的代码: <head> <title></title> ...
- node.js入门及express.js框架
node.js介绍 javascript原本只是用来处理前端,Node使得javascript编写服务端程序成为可能.于是前端开发者也可以借此轻松进入后端开发领域.Node是基于Google的V8引擎 ...
- 记录一些js框架用途
accounting.min.js 货币格式化alertify.min.js 提示信息库amd.loader.js 按需动态加载js文件angular-cookies.js 处理cookieangul ...
- Cookie和Session在Node.JS中的实践(三)
Cookie和Session在Node.JS中的实践(三) 前面作者写的COOKIE篇.SESSION篇,算是已经比较详细的说明了两者间的区别.机制.联系了.阅读时间可能稍长,因为作者本身作图也做了不 ...
随机推荐
- 【效率工具】史上最好用的SSH一键登录脚本,超强更新!
说明 虽然已经是凌晨,但丝毫不能掩盖我激动的心情,今天完成了对GotoSSH的一次大更新,新增了两个肥肠实用的功能,我只能说,是真的好用,话不多说,先来看效果图: 普通的一键登录: 一键登录跳板机,然 ...
- (办公)rom包
所谓ROM包,通俗点来讲,也就是手机上的系统安装包.使用过智能手机的朋友可能都有过这样的遗憾,自己所用的官方系统虽然能够满足绝大部分的需求,但总有一些细节不是很合自己的心愿……比如说,内置的输入法不好 ...
- css 布局之定位 相对/绝对/成比例缩放
给body添加 overflow: hidden; 可以将页面所有的 滚动条隐藏,但必须要给body 设置一个高度 overflow: hidden; height:864px; 父元素必须要设置 p ...
- celery任务进程关闭
方法1: ps auxww|grep 方法2: Ctrl+C 方法3: celery multi 管理 celery multi start w1 -A proj -l info celery mul ...
- python 制作一对一聊天
用到的参考资料 https://blog.csdn.net/jia666666/article/details/81624550 https://blog.csdn.net/jia666666/art ...
- C# json、xml序列化
json序列化: public static string SerializeJson<T>(T json) { // 1. 需要添加引用 Newtonsoft.Json.dll,默认为 ...
- Codeforces Round #542 C. Connect 搜索
C. Connect time limit per test 1 second memory limit per test 256 megabytes input standard input out ...
- Spring+SpringMVC+Mybatis环境的搭建(使用Intellij IDEA)
前言:本文主要介绍利用IDEA如何搭建SSM环境,并使用mybatis的逆向生成功能,根据数据表生成对应mapper接口和sql映射文件.具体步骤如下. 开发环境: IDEA 14.1.7 maven ...
- 使用Intellij IDEA将web项目导出为war包
前言:IDEA导出war包的方式与MyEclipse有一点不同,使笔者在使用的时候有点困惑,在网上查阅相关资料的时候,发现其描述十分不清晰,于是就有了这篇随笔的诞生.话不多说,直接进入正题. 注:ID ...
- 一款国内好用的Linux发行版?Deepin(深度)Linux
一款国内好用的Linux发行版?Deepin(深度)Linux 目前来说,要将Linux作为桌面解决方案,对于大多数PC用户来说,当然是不现实的,毕竟Linux的主力用户群体依然是少数极客用户.说白了 ...