第一种 直接操作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);
}
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步