Строковый вектор инициализации
Здравствуйте,пишу приложение на C# c использованием Guardant Sign, столкнулся с следующей проблемой: использую строковый(латиница) вектор инициализации для GSII64:
перед вызовом GrdApi.GrdCrypt использую:
....
Int64 initVectorGS2 = FromStringToInt64(sInitVector);
.......
.....
byte[] bArr = new byte[8];
GrdE RetCode = GrdApi.GrdRead(keyHandle, readAdr, 8, out bArr);
RetCode = GrdApi.GrdCrypt(keyHandle,
GrdAN.GSII64,
bArr,
(UInt32)GrdAM.OFB + (UInt32)GrdAM.Decode,
initVectorGS2);
.......
bArr - вычитываем корректно.
После декодирования получаю некорректную строку. Варианта два либо некорректно отрабатывает FromStringToInt64() либо GrdApi.GrdCrypt(), склоняюсь к некорректности FromStringToInt64().
FromStringToInt64() из примера(Test64.cs):
private static Int64 FromStringToInt64(string szInitVectorGS2)
{
byte[] v = new byte[(int)GrdARS.GSII64];
//!!! object instance for unicode->ansi translation and back
ASCIIEncoding e = new ASCIIEncoding();
//zero previous data in array
for (int i = 0; i < v.Length; i++)
v[i] = 0;
//transfer data from unicode string to byte array and prepare data for dll
e.GetBytes(szInitVectorGS2, 0, szInitVectorGS2.Length, v, 0);
return v[0] * 2 ^ 0 + v[1] * 2 ^ 1 + v[2] * 2 ^ 2 + v[3] * 2 ^ 3 + v[4] * 2 ^ 4 + v[5] * 2 ^ 5 + v[6] * 2 ^ 6 + v[7] * 2 ^ 7;
}
где возможно допущена ошибка?