第一种 直接操作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);
}
}