Я пишу приложение asp.net MVC, которое управляет приложением IPhone.
Я хочу, чтобы Iphone отправил мне свой UUID, выглядит следующим образом:
2b6f0cc904d137be2e1730235f5664094b831186
На сервере я хочу создать Guid:
466853EB-157D-4795-B4D4-32658D85A0E0
На Iphone и на сервере мне нужен простой аглоритм, чтобы объединить эти 2 значения в токен Auth, который можно передать. И IPhone, и приложение ASP.NET MVC должны иметь возможность вычислять значение снова и снова на основе UUID и GUID.
Так что это должен быть простой алгоритм без библиотек из .net framework.
Полное решение здесь
public void Test()
{
var DeviceId = Guid.NewGuid();
var newId = "2b6f0cc904d137be2e1730235f5664094b831186";
var guidBytes = DeviceId.ToByteArray();
var iphoneBytes = StringToByteArray(newId);
byte[] xor = new byte[guidBytes.Length];
for (int i=0;i<guidBytes.Length;i++)
{
xor[i] = (byte) (guidBytes[i] ^ iphoneBytes[i]);
}
var result = ByteArrayToString(xor);
}
public static byte[] StringToByteArray(String hex)
{
int NumberChars = hex.Length;
byte[] bytes = new byte[NumberChars / 2];
for (int i = 0; i < NumberChars; i += 2)
bytes[i / 2] = Convert.ToByte(hex.Substring(i, 2), 16);
return bytes;
}
public static string ByteArrayToString(byte[] ba)
{
StringBuilder hex = new StringBuilder(ba.Length * 2);
foreach (byte b in ba)
hex.AppendFormat("{0:x2}", b);
return hex.ToString();
}