第一种 直接操作byte数组

private void SetValue(byte[] byteArr)

{

byte[] LenK = new byte[4]

byte[] LenIV = new byte[4]

Buffer.BlockCopy(byteArr,0,LenK,0,4)

Buffer.BlockCopy(byteArr, 4, LenIV, 0, 4)

int lenK = BitConverter.ToInt32(LenK, 0)

int lenIV = BitConverter.ToInt32(LenIV, 0)

byte[] KeyEncrypted = new byte[lenK]

byte[] IV = new byte[lenIV]

Buffer.BlockCopy(byteArr, 8, KeyEncrypted, 0, lenK)

Buffer.BlockCopy(byteArr, 8 + lenK, IV, 0, lenIV)

byte[] KeyDecrypted = rsa.Decrypt(KeyEncrypted, false)

byte[] IVDecrypted = rsa.Decrypt(IV, false)

}

第二种方法

private void SetValue(byte[] byteArr)

{

using (Stream inFs = new MemoryStream(byteArr))

{

byte[] LenK = new byte[4]

byte[] LenIV = new byte[4]

inFs.Seek(0, SeekOrigin.Begin)

inFs.Read(LenK, 0, 4)

inFs.Seek(4, SeekOrigin.Begin)

inFs.Read(LenIV, 0, 4)

int lenK = BitConverter.ToInt32(LenK, 0)

int lenIV = BitConverter.ToInt32(LenIV, 0)

byte[] KeyEncrypted = new byte[lenK]

byte[] IV = new byte[lenIV]

inFs.Seek(8, SeekOrigin.Begin)

inFs.Read(KeyEncrypted, 0, lenK)

inFs.Seek(8 + lenK, SeekOrigin.Begin)

inFs.Read(IV, 0, lenIV)

}