c# - 限制加密中使用的字符

标签 c# .net asp.net-mvc-3 encryption

我有一个非常简单的加密类,它使用 tripleDES 来加密我网站上特定页面的查询字符串。我这样做是为了防止人们根据我们的数据库 ID 顺序抓取页面。

反正我用过 this encryption method

但是,它包括 3d% 和一些其他特殊字符,这些字符不应出现在查询字符串中,并且出于安全目的被 Url Scan 拒绝。实际生成的加密字符串中有一个=。我不想更改 URL 扫描,但我想知道是否有办法为 tripleDES 加密提供程序 限制 加密字符或者其他的东西。我对 encyrption 几乎一无所知,我真的只是混淆了查询字符串,所以我对有关查询字符串加密的其他选项持开放态度。

最佳答案

您链接的方法使用 Base64 encoding将加密字节数组(其中可能包含各种“不可打印”字节)转换为仅包含 A-Z, 的形式a-z, 0-9, +, /=

但是,最后这 3 个不适合 URL。

您可以对 Base64 字符串执行简单的 String.Replace,将这些字符替换为 URL 安全字符,例如+ => -, / => _ and = => .。您甚至可以将 = 完全删除,因为它们只是填充字符。 (进行前两个替换并删除 =suggested by RFC3548 。)

然后当你想解密你的字符串时,简单地反转这个替换。如果您完全删除 =,请添加 = 直到字符串的长度是 4 的倍数。

关于c# - 限制加密中使用的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12495746/

相关文章:

c# - C#.net Core 中的 xml 解析

c# - 如何从 DataTable 向 Excel 添加其他工作表

c# - 安装/部署项目 : Prevent modified files from being removed when uninstalling

asp.net-mvc-3 - 如何在 MVC 中禁用数据注释所需的字段验证器

wcf - 在 ASP.NET MVC 项目上使用 Unity 解决 ServiceRoute 中的依赖项

c# - 需要为 C++/CLI 创建什么类型的项目?

c# - 使 Toolstripcontainer 面板像 MDI 父级一样工作

c# - 执行位于 JavaScript 代码隐藏中的函数?

c++ - .NET 平台调用中使用的命名约定

asp.net-mvc-3 - 如何在nopCommerce中显示所有产品?