DES加密解密 与 Cookie的封装(C#与js互相加密解密)
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互相加密解密)的更多相关文章
- A2D JS框架 - DES加密解密 与 Cookie的封装(C#与js互相加密解密)
这次实现了JS端的DES加密与解密,并且C#端也能正确解析DES的密文(反之也实现了) 使用的代码如下,非常方便: <script src="A2D.js" type=&qu ...
- C# 加密(Encrypt) 解密(Decrypt) 操作类 java与 C# 可以相互加密解密
public sealed class EncryptUtils { #region Base64加密解密 /// <summary> /// Base64加密 /// </summ ...
- RSA 加密 解密 (长字符串) JAVA JS版本加解密
系统与系统的数据交互中,有些敏感数据是不能直接明文传输的,所以在发送数据之前要进行加密,在接收到数据时进行解密处理:然而由于系统与系统之间的开发语言不同. 本次需求是生成二维码是通过java生成,由p ...
- js前端加密,php后端解密(crypto-js,openssl_decrypt)
来源:https://blog.csdn.net/morninghapppy/article/details/79044026 案例:https://blog.csdn.net/zhihua_w/ar ...
- js base64加密,后台解密
这是为了解决页面发送post请求,传输密码,在页面的控制台可以看到密码的明文,所以先用base64把要传输的密码转换为非明文,然后在后台解密处理. base64encode.js // base64加 ...
- js前台加密,java后台解密实现
参考资料: JS前台加密,java后台解密实现
- AES加密解密——AES在JavaWeb项目中前台JS加密,后台Java解密的使用
一:前言 在软件开发中,经常要对数据进行传输,数据在传输的过程中可能被拦截,被监听,所以在传输数据的时候使用数据的原始内容进行传输的话,安全隐患是非常大的.因此就要对需要传输的数据进行在客户端进行加密 ...
- 【转】JS前台加密,java后台解密实现
因项目需求,需要一些敏感信息进行加密,不能以明文暴露到浏览器. 然后后台进行解密操作 先看一下效果图 未对其加密传输 1.前台JS <script type="text/javascr ...
- js base64加密解密
var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" ...
随机推荐
- Topcoder SRM 628 DIV 2
被自己蠢哭了.... 250-point problem 国际象棋棋盘上给出两个坐标,问象从一个走到还有一个最少要几步. 黑格象仅仅能走黑格,白格象仅仅能走白格,仅仅要推断两个坐标的颜色是否同样就能推 ...
- Java数据库编程、XML解析技术
数据库编程 JDBC概述 是Java Database Connecive,即数据库连接技术的简称,它提供了连接各种常用数据库的能力. 是一种用于执行SQL语句的Java API,可以为多种关系数据库 ...
- ECLIPSE实现了界面显示所有类
按下接口名称CTRL+T实现全面实施的接口类显示 版权声明:本文博客原创文章,博客,未经同意,不得转载.
- 设置CentOS开机连接网络 Centos 开机启动网卡的设置方法
我们开机网卡不能启动所以只能使用 ifup eth0 (eth0指的网卡) 来启动了,但是每一次都这样感觉不方便希望开机自动启动网卡 后来百度搜索了一下发现可以通过修改网卡( ifcfg-eth0)参 ...
- Delphi三层网络架构代码实现
Delphi三层网络架构代码实现 1 .三层网络的概念 三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为: 表现层(UI).业务逻辑层(BLL).数据访 ...
- 第3章1节《MonkeyRunner源码剖析》脚本编写示例: MonkeyRunner API使用示例(原创)
天地会珠海分舵注:本来这一系列是准备出一本书的,详情请见早前博文“寻求合作伙伴编写<深入理解 MonkeyRunner>书籍“.但因为诸多原因,没有如愿.所以这里把草稿分享出来,所以错误在 ...
- Linux 下 简单客户端服务器通讯模型(TCP)
原文:Linux 下 简单客户端服务器通讯模型(TCP) 服务器端:server.c #include<stdio.h> #include<stdlib.h> #include ...
- jQuery数字加减插件
jQuery数字加减插件 我们在网上购物提交订单时,在网页上一般会有一个选择数量的控件,要求买家选择购买商品的件数,开发者会把该控件做成可以通过点击实现加减等微调操作,当然也可以直接输入数字件数.本文 ...
- at System.Data.EntityClient.EntityConnection.GetFactory(String providerString)
最近在做一个WinForm的项目. 使用vs2013开发. 数据库使用的是oracle. 在本地写了一个webservice .测试正常.发布到服务器的时候.就是提示了错误. 打开服务器上的日志.看到 ...
- spring bean范围
总结: 实例代码具体解释: 文件夹结构 Car.java package com.coslay.beans.autowire; public class Car { private String br ...