如何将整数加密为五个字符的字符串?

时间:2014-03-30 12:43:01

标签: c# encryption

我需要一个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)
{
}

我从哪里开始?

2 个答案:

答案 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”是您将发送给用户的字母数字,“资源”是某种识别符(在您的情况下为数字),允许您找到并提供适当的资源。

当您需要向某个用户发送新网址时,只需生成所需长度的随机“哈希”,然后使用该表检查它是否唯一。