创建基于 1 个值的简单加密和解密

creating a simple encryption and decryption based on 1 value

如何制作一个采用 int 值并将其散列为 8 位数字、字母和符号的组合的 c# 算法 return 然后对其解密并给出散列将 return原值?

示例:

输入 - 15896 输出 - A7Bg82!0

输入 - A7Bg82!0 输出 - 15896

答案保密...哈哈

Necklondon 评论说这听起来更像是密码/解密情况。

    public string cipher(string s)
    {
        var array = s.ToCharArray();
        string secret = "asow4akec13";
        int secretLength = secret.Length;
        for (int i = 0; i < s.Length; i++)
        {
            array[i] += secret.ElementAt(i % secretLength);
        }
        return array.ToString();
    }
    
    public string deCipher(string s)
    {
        var array = s.ToCharArray();
        string secret = "asow4akec13";
        int secretLength = secret.Length;
        for (int i = 0; i < s.Length; i++)
        {
            array[i] -= secret.ElementAt(i % secretLength);
        }
        return array.ToString();
    }

警告这未加密!!如果您为 fun/school 执行此操作,那么这是一个不错的解决方案。

这也是一种很肤浅的加密方式。为了正确编码,我们需要使用更复杂的算法和多个不容易被逆向工程的秘密来打乱字符串。

但我认为这可以作为一个基本示例对您有所帮助。

如果你真的想加密一些东西,不要重新发明轮子,使用加密库。

1 - 检查输入是否以 !!! 开头与否

2- 如果不是:

Salt=random number lower than 1000000
return '!'+strtobase64(sha256(iint(nput)*1000000+salt)

3- 如果是

return int(base64tostr(input less "!"))/1000000

使用google查找base64和sha256算法。后者可能有点复杂,但如果你想要一个强大的加密,它就是你所需要的。

加盐的目的是让猜测特定的密码变得更加困难,因为相同的输入会变成几个不同的密码。如果您的用例不需要此部分,请将其删除。