C # простое шифрование - PullRequest
       10

C # простое шифрование

1 голос
/ 11 февраля 2010

Привет, я изучаю C # (как любитель) и пытаюсь понять, как написать простую программу шифрования.

Преобразование символов из ASCII в порядке, все получилось, но это сдвигЯ застрял на.Например, если я хочу написать код для (n + 3), какую позицию мне следует придерживаться?

Ответы [ 5 ]

4 голосов
/ 11 февраля 2010

Вы пытаетесь сделать что-то вроде шифра Цезаря? (т.е. взять каждую букву и сдвинуть ее на определенное количество букв влево или вправо?)

Если это так, вы захотите работать с отдельными символами в вашей строке. Для этого есть тип данных char, и вы можете выполнять арифметические операции. Чтобы получить массив символов из строки, вызовите (string) .ToCharArray (). Затем вы можете перебирать символы и сдвигать каждый символ.

char key = (char)3;
string toEncrypt = "abcdef";
char[] cArray = toEncrypt.ToCharArray();

for (var i = 0; i < cArray.Length; i++) {
   cArray[i] = (char)(cArray[i] + key);
}

Одна вещь, которую нужно иметь в виду, заключается в том, что вам нужно будет «обернуть» своих персонажей, если они пройдут через конец алфавита. Я оставлю это как вызов для вас. :)

Имейте в виду, что, хотя это интересный способ изучения языка, в реальном мире он бесполезен для шифрования и его очень легко взломать.

2 голосов
/ 11 февраля 2010

В инфраструктуру .net встроено множество вариантов шифрования. Поскольку вы увлекаетесь, возможно, вы захотите сделать это вручную, но ваша тестовая программа может просто использовать фреймворк.

Пространство имен System.Security.Cryptography

Также можно использовать Блок приложения криптографии

Возможно, использовать их больше, чем вам нужно, но использование встроенных сред для достижения вашей цели может также помочь в обучении .net framework и c #.

0 голосов
/ 11 февраля 2010

Если вы не пытаетесь развернуть свое собственное шифрование, в инфраструктуру встроена функция шифрования. Дополнительную информацию см. В этой статье .

редактировать: фиксированная ссылка

0 голосов
/ 11 февраля 2010

То, на что вы смотрите - это Цезарь

В криптографии также используется шифр Цезаря. известный как шифр Цезаря, сдвиг шифр, код Цезаря или Цезарь, является одним из самых простых и широко распространенных известные методы шифрования. Это тип подстановочного шифра, в котором каждая буква в открытом тексте заменить на букву какое-то фиксированное число позиций по алфавиту. За Например, со сдвигом 3, А будет заменить на D, B станет E, и скоро. Метод назван в честь Юлий Цезарь, который использовал это для общаться со своими генералами.

Это хороший способ начать обучение, но, пожалуйста, прочитайте раздел Взлом шифра

Вы можете попробовать что-то вроде

string val = "abc";
string encrypt = "";
for (int iChar = 0; iChar < val.Length; iChar++)
{
    encrypt += (char)(val[iChar] + 3);
}
string decrypt = "";
for (int iChar = 0; iChar < encrypt.Length; iChar++)
{
    decrypt += (char)(encrypt[iChar] - 3);
}

Еще один простой вариант -

Простое шифрование XOR

Это значит, что вам нужно только один метод, "EncryptDecrypt". Пройти верните в него и верните зашифрованы. Передайте зашифрованную строку в него, и вы вернетесь оригинал текст, пока символ XOR то же самое.

0 голосов
/ 11 февраля 2010

Что-то вроде (char)('n' + 3) может дать вам искомый символ, а затем вы можете преобразовать его в число еще раз, как вам нравится ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...