zoukankan      html  css  js  c++  java
  • RC4 加解密小程序(C#)

    C#核心代码

    加解密的核心RC4代码如下:

    public static class RC4
        {
            public static string Encrypt(string key, string data)
            {
                Encoding unicode = Encoding.Unicode;
    
                return Convert.ToBase64String(Encrypt(unicode.GetBytes(key), unicode.GetBytes(data)));
            }
    
            public static string Decrypt(string key, string data)
            {
                Encoding unicode = Encoding.Unicode;
    
                return unicode.GetString(Encrypt(unicode.GetBytes(key), Convert.FromBase64String(data)));
            }
    
            public static byte[] Encrypt(byte[] key, byte[] data)
            {
                return EncryptOutput(key, data).ToArray();
            }
    
            public static byte[] Decrypt(byte[] key, byte[] data)
            {
                return EncryptOutput(key, data).ToArray();
            }
    
            private static byte[] EncryptInitalize(byte[] key)
            {
                byte[] s = Enumerable.Range(0, 256).Select(i => (byte)i).ToArray();
    
                for (int i = 0, j = 0; i < 256; i++)
                {
                    j = (j + key[i % key.Length] + s[i]) & 255;
    
                    Swap(s, i, j);
                }
    
                return s;
            }
    
            private static IEnumerable<byte> EncryptOutput(byte[] key, IEnumerable<byte> data)
            {
                byte[] s = EncryptInitalize(key);
    
                int i = 0;
                int j = 0;
    
                return data.Select((b) =>
                {
                    i = (i + 1) & 255;
                    j = (j + s[i]) & 255;
    
                    Swap(s, i, j);
    
                    return (byte)(b ^ s[(s[i] + s[j]) & 255]);
                });
            }
    
            private static void Swap(byte[] s, int i, int j)
            {
                byte c = s[i];
    
                s[i] = s[j];
                s[j] = c;
            }
        }
    

    实现效果

    image

    源代码

    1. 蓝奏云 下载地址
    2. github 地址

    版权声明

    本文为Billyme的原创文章,不得以任何形式的转载。

  • 相关阅读:
    汇总jQuery的61种选择器及示例
    ACM2028
    Welcome to Erhan Blog
    学习日记-2019529
    3.1-栈
    chrome插件推荐
    Spark RDD
    爬虫-怎么爬静态网站
    一些iOS面试基础题总结
    [PHP] 报错和“@”
  • 原文地址:https://www.cnblogs.com/billyme/p/14772881.html
Copyright © 2011-2022 走看看