Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 加密字节数组,从字符串转换为8位整数数组_C#_Python_.net_Encryption_Type Conversion - Fatal编程技术网

C# 加密字节数组,从字符串转换为8位整数数组

C# 加密字节数组,从字符串转换为8位整数数组,c#,python,.net,encryption,type-conversion,C#,Python,.net,Encryption,Type Conversion,我试图用python记录音频原始数据,ecrypt数据并将其发送到.NET服务器,在那里我解密接收到的数据并转换为字节数组。当我将接收到的数据转换为字节数组时,就像这样编码.ASCII.GetBytes(decryptedData),一切都正常。但最大字节值为63,发送数据的最大字节值为255。发送和接收数据的示例: 发送数据 3、0、3、0、3、0、4、0、4、0、2、0、252、255、1、0、255、255、1、0、0、0 接收数据 3,0,3,0,3,0,4,0,4,0,2,0,63,6

我试图用python记录音频原始数据,ecrypt数据并将其发送到.NET服务器,在那里我解密接收到的数据并转换为字节数组。当我将接收到的数据转换为字节数组时,就像这样编码.ASCII.GetBytes(decryptedData),一切都正常。但最大字节值为63,发送数据的最大字节值为255。发送和接收数据的示例:

发送数据

3、0、3、0、3、0、4、0、4、0、2、0、252、255、1、0、255、255、1、0、0、0

接收数据

3,0,3,0,3,0,4,0,4,0,2,0,63,63,1,0,63,63,1,0,0,0,0

当我将接收到的数据转换为字节数组时,就像这样编码.UTF8.GetBytes(DecryptData(aes,data)),一切都正常。但高价值是不同的。发送和接收数据的示例:

发送数据

6,0,8,0,250,255,255,255,3,0,6,0,2,0,4,0,3,0,6,0,3,0

接收数据

6,0,8,0,239,191,189,239,191,189,239,191,189,239,191,189,3,0,6,0,2,0,4,0,3,0,6,3,0

这看起来像是转换生成了更多的变量。我不知道

下面是python记录、加密和发送数据的代码:

导入pyaudio
导入系统
导入套接字
导入结构
导入base64
从Crypto.Cipher导入AES
从Crypto.Util.Padding导入垫
键=b“bpjAqrgO2N8q7Rfj8IHzeRxmP1W4HwUTWCRi7DQgyDc=”
iv=b“Ta6e1cZAWQMM0QI66JC74w=”
UDP_IP=“127.0.0.1”
UDP_端口=5005
区块=1024
格式=pyaudio.paInt16
通道=2
费率=44100
记录时间=5秒
pya=pyaudio.pyaudio()
stream=pya.open(format=format,channels=channels,rate=rate,input=True,output=True,frames\u per\u buffer=chunk)
打印(“记录”)
对于范围内的i(044100//chunk*记录秒):
data=stream.read(块)
打印(结构解包('{}B'.格式(len(数据)),数据))
sock=socket.socket(socket.AF_INET,socket.sock_DGRAM)
cipher_suite=AES.new(base64.urlsafe_b64解码(密钥),AES.MODE_CBC,base64.urlsafe_b64解码(iv))
cipher\u text=cipher\u suite.encrypt(pad(数据,16))
发送到(密码文本,(UDP\U IP,UDP\U端口))
输入()
#通过将级别与0(或某个阈值)进行比较,检查此处是否存在静音
#数据的内容。
#然后将数据写入或不写入文件
打印(“完成”)
stream.stop_stream()
stream.close()
pya.terminate()
以下是接收、解密和转换数据的C#代码:

使用系统;
使用System.Collections.Generic;
使用System.IO;
使用System.Linq;
Net系统;
使用System.Net.Sockets;
使用System.Security.Cryptography;
使用系统文本;
使用System.Threading.Tasks;
命名空间DOTNETServer
{
班级计划
{
私有静态字符串IP=“127.0.0.1”;
专用静态int端口=5005;
私有静态字符串Key=“bpjAqrgO2N8q7Rfj8IHzeRxmP1W4HwUTWCRi7DQgyDc=”;
私有静态字符串IV=“Ta6e1cZAWQMM0QI66JC74w=”;
静态void Main(字符串[]参数)
{
UDPServer(IPAddress.Parse(IP),端口);
Console.ReadKey();
}
专用静态无效UDPServer(IP地址IP,int端口)
{
字节[]数据=新字节[32768];
IPEndPoint端点=新IPEndPoint(IP,端口);
UdpClient客户端=新的UdpClient(端点);
对称算法aes=新aes();
aes.KeySize=256;
aes.Key=Convert.FromBase64String(Key);
aes.IV=从Base64字符串转换而来(IV);
while(true)
{
WriteLine(“等待数据”);
数据=client.Receive(ref端点);
var convertedReceivedData=Encoding.ASCII.GetBytes(解密数据(aes,数据));
控制台。写(“”);
foreach(convertedReceivedData中的var项)
{
控制台。写入(项目+“,”);
}
控制台。写(“)”;
}
}
静态字节[]加密文本(对称算法,字符串文本)
{
ICryptoTransform encryptor=aesAlgorithm.CreateEncryptor(aesAlgorithm.Key,aesAlgorithm.IV);
字节[]数据=新字节[32768];
使用(MemoryStream ms=new MemoryStream())
{
使用(CryptoStream cs=新的CryptoStream(ms、encryptor、CryptoStreamMode.Write))
{
使用(StreamWriter writer=新StreamWriter(cs))
{
作者:写(文本);
}
}
data=ms.ToArray();
}
返回数据;
}
静态字符串解密数据(对称算法aes,字节[]数据)
{
ICryptoTransform decryptor=aes.CreateDecryptor(aes.Key,aes.IV);
字节[]encryptedDataBuffer=数据;
字符串纯文本=”;
使用(MemoryStream ms=新的MemoryStream(encryptedDataBuffer))
{
使用(CryptoStream cs=新加密流(ms、解密器、CryptoStreamMode.Read))
{
使用(StreamReader=新StreamReader(cs))
{
明文=reader.ReadToEnd();
}
}
}
返回纯文本;
}
}
}

好的,我根据elgonzo的建议解决了我的问题。 当然,我从数据中打印每个字节的数据,而不使用python进行任何转换或解包,如下所示:

data=stream.read(块)
对于数据中的项目:
打印(项目)
在.NET应用程序中,只需使用Rijndael对输入字节[]进行加密和解密,并将字节[]作为如下输出:

公共静态字节[]解密(字节[]密码数据,字节[]密钥,字节[]IV)
{
MemoryStream ms=新的MemoryStream();
Rijndael alg=Rijndael.Create();
alg.Key=Key;
alg.IV=IV;
加密流cs=ne