我需要一个C#方法来将整数加密为五个字符的字符串,其中有效字符是a-z,A-Z,0-9
我需要这样做,因为我正在向看起来像这样的用户发送网址...
http://www.website.com.au/3
用户将在此网址上看到特定于他们的数据。数据不是非常敏感,但只要输入下一个号码就可以看到其他人的广播是不可接受的:
http://www.website.com.au/4
但是,还需要保持网址的简短和可读性,因为网址可以通过短信与您联系,我们也不希望通过大量长的加密值来放宽文字信息空间
http://www.website.com.au/3
可能会成为
http://www.website.com.au/a6Yqo
我意识到这种加密程度相当弱,但对于这些广播来说已经足够了
public string Encrypt(int number)
{
}
public int Decrypt(string encrypted)
{
}
我从哪里开始?
答案 0 :(得分:2)
不完全符合您的要求,但会完成工作
public static string Encrypt(int value)
{
return Convert.ToBase64String(BitConverter.GetBytes(value)).Replace("==","");
}
public static int Decrypt(string value)
{
if(value.Length!=6)
throw new ArgumentException("Invalid length.");
return BitConverter.ToInt32(Convert.FromBase64String(value + "=="),0);
}
结果:
0 : AAAAAA
1 : AQAAAA
2 : AgAAAA
3 : AwAAAA
4 : BAAAAA
5 : BQAAAA
6 : BgAAAA
7 : BwAAAA
8 : CAAAAA
9 : CQAAAA
10 : CgAAAA
11 : CwAAAA
12 : DAAAAA
13 : DQAAAA
14 : DgAAAA
15 : DwAAAA
16 : EAAAAA
17 : EQAAAA
18 : EgAAAA
19 : EwAAAA
20 : FAAAAA
21 : FQAAAA
22 : FgAAAA
23 : FwAAAA
24 : GAAAAA
答案 1 :(得分:0)
创建一个将“hash”映射到“resource”的表。 “hash”是您将发送给用户的字母数字,“资源”是某种识别符(在您的情况下为数字),允许您找到并提供适当的资源。
当您需要向某个用户发送新网址时,只需生成所需长度的随机“哈希”,然后使用该表检查它是否唯一。