首页新闻找找看学习计划

关于asp.net 使用routing的一些问题。

0
[待解决问题]

项目里面使用了routing 做路由配置,在做一些删除编辑操作的时候,希望把传递的参数先进行加密,接收的时候在进行解密,问题来了。加密使用的是aes 加密,加密后的参数可能会出现/ 或者?这样的字符。在路由规则里面又不允许有这样的字符,如果有这样的字符,就会无法匹配,后面想了想。在加密后在进行url编码,这时候/ 就变成了%2 这样的字符。但是结果还是不行,遇到这样的情况,除了去改变加密规则以外,还有没有其他方式可以处理。

yzy的主页 yzy | 菜鸟二级 | 园豆:309
提问于:2015-01-23 18:49
< >
分享
所有回答(1)
0

你可以看一下BASE64编码

爱编程的大叔 | 园豆:29788 (高人七级) | 2015-01-23 20:56

Base64  里面也有 /  + 号  组成。 除非就是替换掉这两个字符。

 

支持(0) 反对(0) yzy | 园豆:309 (菜鸟二级) | 2015-01-23 23:10

@yzy: 

在URL中的应用[编辑]

Base64编码可用于在HTTP环境下传递较长的标识信息。例如,在Java持久化系统Hibernate中,就采用了Base64来将一个较长的唯一标识符(一般为128-bit的UUID)编码为一个字符串,用作HTTP表单和HTTP GET URL中的参数。在其他应用程序中,也常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式。此时,采用Base64编码不仅比较简短,同时也具有不可读性,即所编码的数据不会被人用肉眼所直接看到。

然而,标准的Base64并不适合直接放在URL里传输,因为URL编码器会把标准Base64中的“/”和“+”字符变为形如“%XX”的形式,而这些“%”号在存入数据库时还需要再进行转换,因为ANSI SQL中已将“%”号用作通配符。

为解决此问题,可采用一种用于URL的改进Base64编码,它不在末尾填充'='号,并将标准Base64中的“+”和“/”分别改成了“-”和“_”,这样就免去了在URL编解码和数据库存储时所要作的转换,避免了编码信息长度在此过程中的增加,并统一了数据库、表单等处对象标识符的格式。

另有一种用于正则表达式的改进Base64变种,它将“+”和“/”改成了“!”和“-”,因为“+”,“*”以及前面在IRCu中用到的“[”和“]”在正则表达式中都可能具有特殊含义。

此外还有一些变种,它们将“+/”改为“_-”或“._”(用作编程语言中的标识符名称)或“.-”(用于XML中的Nmtoken)甚至“_:”(用于XML中的Name)。

支持(0) 反对(0) 爱编程的大叔 | 园豆:29788 (高人七级) | 2015-01-24 08:21
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册