2010-02-11 3 views
1

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

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

+0

Не могли бы вы уточнить? –

+0

Да, это после меня Цезарь-шифр. Извините за неопределенный вопрос! – Ripper

ответ

0

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

4

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

Если это так, вам нужно будет работать с отдельными символами в вашей строке. Это атрибут datatype, который позволяет это, и вы можете выполнять арифметические операции. Чтобы получить массив символов из строки, вызовите (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

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

System.Security.Cryptography Namespace

Также может использовать Cryptography Application Block

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

0

То, что вы смотрите на это Caesar cipher

В криптографии шифр Цезаря, также известный как зашифровать Цезарь, сдвиговые шифр, код Цезаря или Цезарь сдвиг, является одним из самых простых и наиболее широко известные технологии шифрования . Это тип замещающего шифрования , в котором каждая буква в открытом тексте равна заменена на письмо фиксированным числом положений вниз по алфавиту. Для примера со сдвигом 3, A будет заменено на D, B станет E, а так далее. Метод назван в честь Julius Caesar, который использовал его для связи с его генералами.

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

Вы могли бы попробовать что-то вроде

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); 
} 

Еще один простой вариант, чтобы посмотреть на это

Simple XOR Encryption

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

0

Если вы не пытаетесь свернуть свое собственное шифрование, инфраструктура имеет встроенные функции шифрования. См. Это article для получения дополнительной информации.

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

Смежные вопросы