| Код | using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace ConsoleApplication4 { class Program { static void Main(string[] args) { String pass = "pass"; //объявляем любую строку Byte[] passByte = Encoding.Unicode.GetBytes(pass); //перекодировываем её в массив байт и получаем кодировку для формата UTF-16 Byte[] passByteResCrypt = new Byte[passByte.Length]; //создаём второй массив размером с первый массив для их взаимодействия
for (int i = passByte.Length; i > 0; i -= 2)//в цикле делаем так: из 112 0, 97 0, 115 0, 115 0 получаем в другом массиве: 115 0, 115 0, 97 0, 112 0- то есть цифры в массиве по две переставляются. { passByteResCrypt[i - 2] = passByte[passByte.Length - i]; passByteResCrypt[i - 1] = passByte[passByte.Length - i + 1]; }
pass = Convert.ToBase64String(passByteResCrypt); Console.WriteLine("Результат перестановки: " + pass);
for (int i = passByteResCrypt.Length; i > 0; i -= 2) { passByte[i - 2] = passByteResCrypt[passByteResCrypt.Length - i]; passByte[i - 1] = passByteResCrypt[passByteResCrypt.Length - i + 1]; }
pass = Convert.ToBase64String(passByte); Console.WriteLine("Результат обратной перестановки: " + pass); Console.ReadKey(); } } }
|
Вот тут у меня не слово возвращается в первоначальный вид, а вообще какая-то каша из букв. Как сделать? Тут скорее вопрос как из массива байт, конвертировать в строку, так как это полюбому не правильно:
| Код | pass = Convert.ToBase64String(passByteResCrypt);
|
|