草庐IT

c# - .NET 中的最小消息大小公钥加密

我想使用公钥加密系统将非常少的数据(准确地说是15个字节)加密成尽可能短(最好不超过16个字节)的消息。不幸的是,标准公钥系统RSA会生成与其key一样大的消息,即大约100字节,具体取决于key大小。更困难的是,我只能使用.NET框架库,即没有第三方。我在维基百科上阅读了一些关于椭圆曲线密码学的内容,那里的文字似乎暗示那里的key长度通常比RSAkey短得多。这也可以转化为短消息吗?.NETECDiffieHellmanCng类是否可用于解密/加密消息?它似乎具有与RSA或对称密码不同的类结构。 最佳答案 您可以使用ECDiffi

c# - 如何将 "byte[]"的一部分复制到另一个数组?

这个问题在这里已经有了答案:关闭12年前。PossibleDuplicate:HowtocopypartofanarraytoanotherarrayinC#c#-如何将“byte[]”变量的一部分复制到另一个数组?

c# - 读写二进制文件的最快方法

我目前正在优化一个应用程序,经常进行的操作之一是读写二进制文件。我需要两种类型的函数:Set(byte[]target,intindex,intvalue);intGet(byte[]source,intindex);按大端和小端顺序处理有符号和无符号的short、int和long需要这些函数。下面是我做的一些例子,但我需要评估一下优缺点:第一种方法是使用Marshal将值写入byte[]的内存,第二种方法是使用普通指针来完成此操作,第三种方法是使用BitConverter和BlockCopy来完成此操作unsafevoidSet(byte[]target,intindex,intva

c# - 将整数列表转换为字节数组

我尝试使用List.ConvertAll方法并失败。我想做的是转换List至byte[]我逃避并走了这条路,但我需要弄清楚ConvertAll方法...Listintegers...internalbyte[]GetBytes(){Listbytes=newList(integers.Count*sizeof(byte));foreach(Int32integerinintegers)bytes.AddRange(BitConverter.GetBytes(integer));returnbytes.ToArray();} 最佳答案

c# - 使用 LINQ 在字节数组中搜索以特定字节开始/结束的所有子数组

我正在处理一个COM端口应用程序,我们有一个定义的可变长度数据包结构,我正在用它与微Controller通信。数据包具有用于起始字节和停止字节的定界符。问题是有时读取缓冲区可能包含无关的字符。似乎我总是会得到整个数据包,只是在实际数据之前/之后的一些额外的喋喋不休。所以我有一个缓冲区,每当从COM端口接收到新数据时,我都会将数据附加到该缓冲区。搜索此缓冲区以查找任何可能出现的数据包的最佳方法是什么?例如:假设我的数据包定界符是0xFF并且我有一个这样的数组{0x00,0xFF,0x02,0xDA,0xFF,0x55,0xFF,0x04}我如何创建一个函数/LINQ语句来返回所有以分隔符

c# - 编译器将显式转换为我自己的类型替换为显式转换为 .NET 类型?

我有以下代码:publicstructNum{privatereadonlyT_Value;publicNum(Tvalue){_Value=value;}staticpublicexplicitoperatorNum(Tvalue){returnnewNum(value);}}...doubled=2.5;Numb=(Num)d;这段代码编译通过了,这让我很惊讶。显式转换应该只接受byte,不是double.但不知何故,双重被接受了。当我在转换中放置一个断点时,我看到value已经是byte具有值(value)2.从double转换为byte应该是显式的。如果我用ILSpy反编译我的

c# - 在 C# 中从 short 转换为 byte 时会发生什么?

我有以下代码:shortmyShort=23948;bytemyByte=(byte)myShort;现在我没想到myByte包含值23948。我猜它会包含255(我相信一个字节的最大值)。然而,它包含140,这让我想知道为什么;幕后究竟发生了什么?请注意,我不是在找人来解决23948不能放入一个字节的问题,我只是想知道底层实现 最佳答案 Short是一种2字节类型,一个字节就是一个字节。当您从两个字节转换为一个字节时,您将迫使系统进行调整,并且原始字节之一(最重要的字节)被丢弃并且数据丢失。23948(二进制:0101110110

c# - 将数组划分为子序列数组的数组

我有一个字节数组:byte[]bytes;//manyelements我需要将它分成X元素的字节数组的子序列。例如,x=4。如果bytes.Length不乘以X,则将0添加到最后一个子序列数组,因此所有子序列的长度必须是X。Linq可用。PS:我的尝试staticvoidMain(string[]args){Listbytes=newList(){1,2,3,4,5,6,7,8,9,10,11};intc=bytes.Count/4;for(inti=0;ib=bytes.GetRange(i,4);}}Console.ReadKey();} 最佳答案

c# - "Where are my bytes?"或文件长度特征调查

这是我关于downloadingfilesinchunks问题的延续.解释会很大,所以我会尽量把它分成几个部分。1)我试图做什么?我正在为Window-Phone应用程序创建一个下载管理器。首先我尝试解决下载的问题大文件(解释在上一个问题中)。不,我想添加“可恢复下载”功能。2)我已经做过的事情。目前我有一个运行良好的下载管理器,它可以超越WindowsPhone的RAM限制。这个管理器的特点是,它允许使用HTTPRangeheader下载小块文件。对其工作原理的快速解释:该文件以恒定大小的块下载。我们称这个大小为“delta”。下载文件块后,它以追加模式保存到本地存储(硬盘,在WP上

c# - 串口通讯,读取第9位

我有一个与外部协议(protocol)连接的应用程序使用串行通信。我需要知道它发送给我的每个数据包上是否设置了唤醒位(第9位),并且通信速率必须低于40毫秒,并且响应必须在20毫秒内发送。框架,封装从端口读取的位,只将8位数据发回给我。此外,由于时间问题,我无法等待奇偶校验错误事件。我需要知道如何读取9位,或者是否有http://www.wcscnet.com/CdrvLBro.htm的免费替代品 最佳答案 您是否尝试将串行读取函数放在奇偶校验错误事件处理程序中?根据驱动程序的不同,这可能足够快。这不会恰好适用于某种老虎机协议(pr