有一个 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;
}
}
}
可以啦
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