【问题标题】:Looking for Encryption and Decryption method without special characters寻找没有特殊字符的加解密方法
【发布时间】:2013-11-27 11:17:09
【问题描述】:

我很难为 ASP.NET 找到 加密解密 方法。

我有一个带有按钮的网站,该按钮可以重定向到这样的下载页面:

www.example.com/downloads/1/filename.jpg

其中 1 = id。

我希望将 id 加密为如下内容:

www.example.com/downloads/k0sjD3ks0x/filename.jpg

我想使用 不使用 * / = + 等特殊字符的加密来执行此操作,因为这些会“干扰”链接,并且它会尝试导航到不使用特殊字符的页面存在。

问题是几乎所有的加密方法(除了十六进制和 MD5)都会返回带有这些特殊字符的加密字符串。我不想使用十六进制,因为 1 的 id 将被加密为 32 之类的东西,而且我相信 MD5 无法解密(如果我错了,请纠正我)。

所以如果有人知道没有特殊字符的加密或自己写的并愿意分享,我将不胜感激。

提前致谢。

【问题讨论】:

  • 如果您想要实现,我也会考虑使用标准的身份验证和授权方法。
  • 请问您为什么要这样做,而不是像 oleksii 建议的那样仅通过标准做法保护资源?
  • 因为我想传递 id 以便在另一个页面中使用它

标签: c# asp.net encryption


【解决方案1】:

为什么不想使用十六进制?

如果 id 始终是密码,你知道 32 不是十进制的 32 而是十六进制的 32。

将密码编码为十六进制。十六进制不包含特殊字符。

加密算法输出二进制。您需要将此二进制文件编码为字符串。不管你使用什么加密算法,你只需要对算法输出的二进制进行编码。

或者,url 编码字符串密码:

System.Web.HttpUtility.UrlEncode("cryptogram with special chars");

【讨论】:

  • 好的,谢谢,我什至没有想到这一点。它适用于我使用 AES 字符串并将其编码为十六进制的地方。
猜你喜欢
  • 2017-09-09
  • 1970-01-01
  • 1970-01-01
  • 2014-06-06
  • 2020-10-12
  • 2012-12-21
  • 1970-01-01
  • 2011-09-06
  • 2010-10-24
相关资源
最近更新 更多