C# 寻找没有特殊字符的加密和解密方法

C# 寻找没有特殊字符的加密和解密方法,c#,asp.net,encryption,C#,Asp.net,Encryption,我很难找到ASP.NET的加密和解密方法 我有一个网站,上面有一个按钮,可以重定向到下载页面,如下所示: www.example.com/downloads/1/filename.jpg 其中1=id 我希望将id加密为如下内容: www.example.com/downloads/k0sjD3ks0x/filename.jpg 我想用一种加密来做到这一点,不使用像*/=+这样的特殊字符,因为这些字符会“干扰”链接,它会尝试导航到一个不存在的页面 问题是,几乎所有的加密方法(除了十六进制和MD5

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

我有一个网站,上面有一个按钮,可以重定向到下载页面,如下所示:

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

其中1=id

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

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

我想用一种加密来做到这一点,不使用像*/=+这样的特殊字符,因为这些字符会“干扰”链接,它会尝试导航到一个不存在的页面

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

因此,如果有人知道没有特殊字符的加密,或者自己写了一个,并愿意与大家分享,我将不胜感激


提前谢谢

为什么不使用十六进制

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

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

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

或者,url对字符串密码进行编码:

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

好的,谢谢,我都没想到。当我使用AES字符串并将其编码为十六进制时,它会起作用。如果您想实现这一点,我也会考虑使用标准的身份验证和授权方法。请问您为什么要这样做,与oleksii建议的仅使用标准实践保护资源不同?因为我想传递id以便在另一个页面中使用它