python 实现C# 代码

问题遇到的现象和发生背景

有一个 C#的代码,想用python实现这个C#代码的功能,求各位帮忙

namespace ConsoleApp49
{
    class Program
    {
        static void Main(string[] args)
        {


            Console.WriteLine("请输入你要加密的字符串:");
            var data = Console.ReadLine();
            var jiami = VinEncrypt(data);
            Console.WriteLine("加密后:" + jiami);

            var jiemi = VinDecrypt(jiami);
            Console.WriteLine("解密后:" + jiemi);
            Console.ReadKey();

        }


        //字符加密方法
        public static string VinEncrypt(string text)
        {
            //字符串转数组
            byte[] bytes = Encoding.Default.GetBytes(text);
            //遍历数组
            for (int i = 0; i < bytes.Length; i += 2)
            {
                bytes[i] = (byte)~bytes[i];
            }
            //Convert.ToBase64String()方法用于将8位无符号整数数组的值转换为以基数64位编码的等效字符串表示形式
            return Convert.ToBase64String(bytes);
        }

        //解密方法
        public static string VinDecrypt(string text)
        {
            //初始化字符串
            string result;
            try
            {
                //Convert.FromBase64String(String)方法将指定的字符串转换为等效的8位无符号整数数组,该字符串将二进制数据编码为以64位为基数。
                byte[] array = Convert.FromBase64String(text);
                for (int i = 0; i < array.Length; i += 2)
                {
                    array[i] = (byte)~array[i];
                }
                //按照指定编码格式进行转换
                result = Encoding.Default.GetString(array);
            }
            catch
            {
                result = "";
            }
            //返回结果
            return result;
        }
    }
}


可以啦

img

img

import base64
import array


class Program:

    def VinEncrypt(self, data):
        data = data.encode('utf-8')
        result = []
        for index, item in enumerate(data, 0):
            if index % 2 == 0:
                result.append(~item)
            else:
                result.append(item)
        data = array.array('b', result)
        encode = base64.b64encode(data.tobytes())
        return encode.decode('utf-8')

    def VinDecrypt(self, data):
        encode = base64.b64decode(data.encode('utf-8'))
        array_array = array.array('b', [])
        array_array.frombytes(encode)
        result = []
        for index, item in enumerate(array_array, 0):
            if index % 2 == 0:
                result.append(~item)
            else:
                result.append(item)
        return bytes(result).decode('utf-8')


if __name__ == '__main__':
    data = input('请输入你要加密的字符串:')
    program = Program()
    data = program.VinEncrypt(data)
    print("加密后:" + data)

    re_data = program.VinDecrypt(data)
    print("解密后:" + re_data)

^ 这个运算符知道吧 c# 的 ~ 和他是一个意思
不就是个异或加密吗?

为什么不直接调用呢,否则每次都得改https://blog.csdn.net/www_wo/article/details/126784420