安然不哭-西坝阿超个人博客

做技术一定要一颗恒心,这样才不会半途而废。

c#异或算法(加密解密)

2018-3-3 钟建超



我用简单的异或算法,密钥是123(必须是0~255之间的整数,但可以扩充成更大范围):

    
string s = "中国人和日本人。";
    Response.Write("加密前:" + s + "<br/>");
    StringBuilder sb = new StringBuilder();
    byte[] bytes1 = Encoding.Unicode.GetBytes(s);
    for (int i = 0; i < bytes1.Length; i++)
    {
        bytes1[i] = (byte)(bytes1[i] ^ 123);
        sb.AppendFormat("{0:D3}", bytes1[i]);
    }
    string r1 = sb.ToString();
    Response.Write("加密后:" + r1 + "<br/>");
    MatchCollection matches = Regex.Matches(r1, @"\d{3}");
    byte[] bytes2 = new byte[matches.Count];
    for (int i = 0; i < matches.Count; i++)
        bytes2[i] = (byte)(byte.Parse(matches[i].Value) ^ 123);
    string r2 = Encoding.Unicode.GetString(bytes2);
    Response.Write("解密后:" + r2);


加密前:中国人和日本人。

加密后:086053134045193053247047158030087028193053121075

解密后:中国人和日本人。

标签: c#