Unity加密(Sha256方式加密)


之前在项目中涉及到了加密处理方面的知识,在这里做个记录,加密方式采取的是Sha256方式,是比较常用的加密,代码如下:


public void Save()
    {
        Debug.Log(user.text+":"+ pass.text);
        if (user.text == null || pass.text == null ||
            user.text == string.Empty || pass.text == string.Empty)
            return;
        

        string nonce = Nonce(16, true, false, true, false, "123456789ABCDEF");
       
        //Thread.Sleep(100);
        string cnonce = Nonce(16, true, false, true, false, "123456789ABCDEF");

        string passWord = Sha256(nonce + Sha256(pass.text) + cnonce);
        
        endUrl = "?username=" + user.text + "&password=" + passWord
            + "&nonce=" + nonce + "&cnonce=" + cnonce;

        Debug.Log(_url + endUrl);
        StartCoroutine(PostForUnity(_url + endUrl,"{}"));
        //Debug.Log(passWord);
    }


    /// 
    /// 256加密
    /// 
    /// 密码
    /// 返回加密后的密码
    public string Sha256(string pass)
    {
        if (pass == null || pass == string.Empty) { PassErrorUI.SetActive(true); return null; } 
        byte[] buffer = System.Text.Encoding.UTF8.GetBytes(pass);

        byte[] hash = SHA256Managed.Create().ComputeHash(buffer);
        StringBuilder builder = new StringBuilder();
        for (int i = 0; i < hash.Length; i++)
        {
            builder.Append(hash[i].ToString("X2"));
        }
       // Debug.Log("一次:" + builder.ToString().ToUpper());
        return builder.ToString().ToUpper();
    }
    /// 
    /// 随机16位
    /// 
    /// 长度
    /// 是否有数字
    /// 是否有小写
    /// 是否有大写
    /// 是否有特殊字符
    /// 随机码
    /// 返回随机数
    public string Nonce(int length, bool useNum, bool useLow, bool useUpp, bool useSpe, string custom)
    {
        byte[] b = new byte[4];
        new System.Security.Cryptography.RNGCryptoServiceProvider().GetBytes(b);
        System.Random r = new System.Random(BitConverter.ToInt32(b, 0));
        string s = string.Empty;
        string value = custom;
        if (useNum == true) value += "0123456789";
        if (useLow == true) value += "abcdefghijklmnopqrstuvwxyz";
        if (useUpp == true) value += "ABCDEF";
        if (useSpe == true) value += "!\"#$%&'()+,-./:;<=>?@[\\]^_~{|}`";
        for (int i = 0; i < length; i++)
        {
            s += value.Substring(r.Next(0, value.Length - 1), 1);
        }
       // Debug.Log("s:" + s);
        return s;
    }

单纯的sha256因为很常用所以破解起来会容易些,所以在这里我加了一个16位的随机数,增强了加密方式,简单就到这里吧,没有什么好说的,主要是详细看看脚本,理解脚本。

有疑问的话可以评论留言,也可以加群 QQ:853164080  

Over!

你可能感兴趣的:(WebGL开发)