0

Лига программистов взываю к тебе!

нужно написать программу с# шифрующию методом xor без использования ^. на даный момент у меня такой код но он работает не со всеми символами пишет слишком большое/малое значение невозможно конвертировать
string j = Convert.ToString('p', 2);
string key = Convert.ToString('l', 2);
string r ="";
for (int i = 0; i < j.Length; i++)
{
if ((j[i]=='1')&&(key[i]=='1'))
{
r = r + 0;
}
if ((j[i] == '0') && (key[i] == '1'))
{
r = r + 1;
}
if ((j[i] == '1') && (key[i] == '0'))
{
r = r + 1;
}
if ((j[i] == '0') && (key[i] == '0'))
{
r = r + 0;
}
}
byte gh=Convert.ToByte(r);
Console.WriteLine(Convert.ToChar(gh));
Console.ReadLine();
0
Автор поста оценил этот комментарий
и копапаста из вики призвана показать, что называть xor методом шифорвания не хорошо :)
ну я же дал готовую реализацию для стрингов, также видел другие реализации прямо тут )
что тут непонятного:
сравнивая две бинарные последовательности xor даёт 0 при условии того, что элементы с одинаковым порядковым номером равны и 1 в ином случае
for (var i = 0; i < maxLength; i++)
{
resultAggregator.Append(normA[i] == normB[i] ? "0" : "1");
}
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
сравниваю я их без проблем не могу конвертировать из бинарной строки 101010 в символ
показать ответы
0
Автор поста оценил этот комментарий
И ещё поправочка, XOR это логическая операция, а не метод шифрования, ато аж глаза резануло )
http://ru.wikipedia.org/wiki/%D0%91%D0%B8%D1%82%D0%BE%D0%B2%...
>Сложение по модулю два (или двухместная операция исключающее ИЛИ) — это бинарная операция, результат действия которой равен 1, если число складываемых единичных битов нечетно, если же их число четно, то результат равен 0.
Пример:
Искл. ИЛИ
0011
0101
____
0110
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
как это работает я знаю. я не знаю как реализовать это без ^
показать ответы
0
Автор поста оценил этот комментарий
И тебе спасибо :)
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
что то ни так ксор должен работать в обе стороны а у нас обратно не расшифровывает. кидаю виндовс форм
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void label1_Click(object sender, EventArgs e)
{

}

private void textBox1_TextChanged(object sender, EventArgs e)
{

}

private void button1_Click(object sender, EventArgs e)
{
string itog="";
string vod = textBox1.Text;
string key1 = textBox2.Text;
int sh = 0;


for (int g = 0; g < vod.Length; g++)
{
if (key1.Length > sh)
{
var input = Convert.ToString(vod[g], 2);
var key = Convert.ToString(key1[sh], 2);
int result = 0;

for (int i = 0; i < input.Length; i++)
{
result += (int)Math.Pow(input[i] != key[i] ? 1 : 0, i);
}
sh++
itog=itog+Convert.ToString((Convert.ToChar(result)));
}
else
{
g--;
sh = 0;
}
textBox3.Text = itog;
}
}

private void textBox3_TextChanged(object sender, EventArgs e)
{

}

private void Form1_Load(object sender, EventArgs e)
{

}
}
}
показать ответы
1
Автор поста оценил этот комментарий
Это тернарный оператор. Если условие input[i] != key[i] истино, то результатом является левая часть, в данном случае "1". Если условие ложно - правая часть "0".

Т.е. функция Math.Pow первым аргументом получит или 1 или 0 в зависимости равен ли символ в строке input символу в строке key.
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
спасибо плюс тебе на все твои посты добрый человек
показать ответы
1
Автор поста оценил этот комментарий
Как это работает:
input[i] != key[i] - вместо твоих if :) xor = 1 если биты разные.
Math.Pow(input[i] != key[i] ? 1 : 0, i) - перевод из двоичной в десятеричную систему.
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
ага а можно сылочьку где почитать о вот этом хитропопстве input[i] != key[i] ? 1
показать ответы
0
Автор поста оценил этот комментарий
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
result += (int) Math.Pow(input[i] != key[i] ? 1 : 0, i);
не очень понимаю эту строчку конкретно input[i] != key[i] ? 1 : 0
что это такое?
показать ответы
0
Автор поста оценил этот комментарий
Я имею в виду, в какой строке компилятор указывает на ошибку?
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
компелятор не указывает ошибку там чуть ниже скрикшон
показать ответы
1
Автор поста оценил этот комментарий
Я перепишу чтобы вместо битов были символы. Так проще будет.
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
большое спасибо
показать ответы
1
Автор поста оценил этот комментарий
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
cпасибо теперь только надо с этим разобраться многие методы не знаю
показать ответы
0
Автор поста оценил этот комментарий
"пишет слишком большое/малое значение невозможно конвертировать"
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
и меня так же
показать ответы
0
Автор поста оценил этот комментарий
Ладно, придется запустить студию.
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
не получается?или я торопюсь?
показать ответы
0
Автор поста оценил этот комментарий
Даешь. У тебя тип байт от 0 до 255, а ты в него 1000 засовываешь. И да, ConvertToByte считает что ты ей передаешь десятичное число.
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
тогда подскажите как мне полукопченую строку из 0 и 1 преобразовать в символ?
показать ответы
0
Автор поста оценил этот комментарий
http://pastebin.com/Uur7T0DG
Как-то так. Но мне лень проверять.
Ошибка из-за того, что string мультибайтовый - вы пытаетесь два байта сконвертировать в один.
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
боюсь я даже блиско не понимаю что вы сделали и компилятор ругается
показать ответы
0
Автор поста оценил этот комментарий
http://pastebin.com/Uur7T0DG
Как-то так. Но мне лень проверять.
Ошибка из-за того, что string мультибайтовый - вы пытаетесь два байта сконвертировать в один.
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
ого это c#?
показать ответы
0
Автор поста оценил этот комментарий
Сам компилятор не ругается на ваш код?
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
нет. только во время выполнения
Иллюстрация к комментарию
показать ответы
Автор поста оценил этот комментарий
Какой тип у исходных данных? Используй побитовый сдвиг вместо конвертации в строку
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
исходный тип char а как использовать побитовый сдвиг?
показать ответы
0
Автор поста оценил этот комментарий
В какой строке-то пишет?
раскрыть ветку (1)
0
Автор поста оценил этот комментарий
что в какой строке?
показать ответы
Автор поста оценил этот комментарий
Кто такой r = r 0; и r = r 1; ?
раскрыть ветку (1)
Автор поста оценил этот комментарий
там должно быть
r = r+1;
Автор поста оценил этот комментарий
ты думаешь тут есть такая лига?за пол года ниразу не слышал о ней
раскрыть ветку (1)
2
Автор поста оценил этот комментарий
думаешь умерли?
Автор поста оценил этот комментарий
ты думаешь тут есть такая лига?за пол года ниразу не слышал о ней
раскрыть ветку (1)
2
Автор поста оценил этот комментарий
ну была парочка

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества