 |
[C#] Шифрование и дешифрование... - Вопросы и ответы, обсуждения - Ваши вопросы по C# только в данном разделе |
18.09.2011, 21:30
|
#1
|
|
|
|
Разведчик
|
 Регистрация: 30.07.2011
 Сообщений: 19
 Популярность: 115
 Сказал(а) спасибо: 34
Поблагодарили 32 раз(а) в 30 сообщениях
|
[C#] Шифрование и дешифрование...
Помогите с кодом для шифровки и дешифровки строки...
В php используется такой код:
Код:
function encrypt( $string )
{
$key = ‘BXcfTYewQ’;
$result = "";
for( $i = 1; $i <= strlen( $string ); $i++ )
{
$char = substr( $string, $i - 1, 1 );
$keychar = substr( $key, ( $i % strlen( $key ) ) - 1, 1 );
$char = chr( ord( $char ) + ord( $keychar ) );
$result .= $char;
}
return $result;
}
//echo encrypt(abcdefgh);
function decrypt( $string )
{
$key = ‘BXcfTYewQ’;
$result = "";
for( $i = 1; $i <= strlen( $string ); $i++ )
{
$char = substr( $string, $i - 1, 1 );
$keychar = substr( $key, ( $i % strlen( $key ) ) - 1, 1);
$char = chr( ord( $char ) - ord( $keychar ) );
$result .= $char;
}
return $result;
}
//echo decrypt(encrypt(abcdefgh));
Результат работы (то что в комментариях):
Код:
start encrypt:
ò¤»Ç˺ÀÍ
end;
start decrypt:
abcdefgh
end;
Если ли что-то подобное в C#? Обязательна совместимость с написанным выше! Нужно для шифрования данных на сервере и последующей дешифровки их в программе, ну и использования....
Добавлено через 46 минут
Эм.. еще одна проблема, код для php преобразует кириллицу в полную чушь... что можно сделать?
________________
«Шрёдингер ходил по комнате в поисках котёнка, а тот сидел в коробке ни жив ни мертв.»
Последний раз редактировалось iVs.Dark; 18.09.2011 в 22:16.
Причина: Добавлено сообщение
|
|
|
18.09.2011, 22:29
|
#2
|
|
|
|
Рыцарь-капитан
|
 Регистрация: 29.01.2010
 Сообщений: 547
 Популярность: 41279
 Сказал(а) спасибо: 692
Поблагодарили 2,270 раз(а) в 1,035 сообщениях
|
Re: [C#] Шифрование и дешифрование...
мм если не ошибаюсь...
Код:
public static string Encrypt(string toEncrypt, string key, bool useHashing)
{
byte[] buffer;
byte[] bytes = Encoding.UTF8.GetBytes(toEncrypt);
if (useHashing)
{
buffer = new MD5CryptoServiceProvider().ComputeHash(Encoding.UTF8.GetBytes(key));
}
else
{
buffer = Encoding.UTF8.GetBytes(key);
}
TripleDESCryptoServiceProvider provider2 = new TripleDESCryptoServiceProvider {
Key = buffer,
Mode = CipherMode.ECB,
Padding = PaddingMode.PKCS7
};
byte[] inArray = provider2.CreateEncryptor().TransformFinalBlock(bytes, 0, bytes.Length);
return Convert.ToBase64String(inArray, 0, inArray.Length);
}
public static string Decrypt(string toDecrypt, string key, bool useHashing)
{
byte[] buffer;
byte[] inputBuffer = Convert.FromBase64String(toDecrypt);
if (useHashing)
{
buffer = new MD5CryptoServiceProvider().ComputeHash(Encoding.UTF8.GetBytes(key));
}
else
{
buffer = Encoding.UTF8.GetBytes(key);
}
TripleDESCryptoServiceProvider provider2 = new TripleDESCryptoServiceProvider {
Key = buffer,
Mode = CipherMode.ECB,
Padding = PaddingMode.PKCS7
};
byte[] bytes = provider2.CreateDecryptor().TransformFinalBlock(inputBuffer, 0, inputBuffer.Length);
return Encoding.UTF8.GetString(bytes);
}
Код:
public static string A(string b, string c, bool d)
{
byte[] keyArray;
var toEncryptArray = Convert.FromBase64String(b);
if (d)
{
var hashmd5 = new MD5CryptoServiceProvider();
keyArray = hashmd5.ComputeHash(Encoding.UTF8.GetBytes(c));
}
else
keyArray = Encoding.UTF8.GetBytes(c);
var tdes = new TripleDESCryptoServiceProvider
{
Key = keyArray,
Mode = CipherMode.ECB,
Padding = PaddingMode.PKCS7
};
var cTransform = tdes.CreateDecryptor();
var resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
return Encoding.UTF8.GetString(resultArray);
}
|
|
|
18.09.2011, 22:56
|
#3
|
|
|
|
Разведчик
|
 Регистрация: 30.07.2011
 Сообщений: 19
 Популярность: 115
 Сказал(а) спасибо: 34
Поблагодарили 32 раз(а) в 30 сообщениях
|
Re: [C#] Шифрование и дешифрование...
 |
Цитата: |
 |
|
|
|
|
|
|
|
|
мм если не ошибаюсь...
|
|
 |
|
 |
|
не пашет
___
можно любой другой способ, мне главное чтобы корректно расшифровывалось с php в C# плюс желательна поддержка кириллицы.
Добавлено через 5 минут
вроде нашел, пока не знаю как работает с кириллицей т.к. это только расшифровка....
Код:
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
des.Mode = CipherMode.ECB;
des.Padding = PaddingMode.Zeros;
byte[] key = Encoding.UTF8.GetBytes("abcdefgh");
byte[] IV = Encoding.UTF8.GetBytes("abcdefgh");
ICryptoTransform transformer = des.CreateDecryptor(key, IV);
byte[] s = Convert.FromBase64String("/PvORPIS2n4="); //"/PvORPIS2n4=" = "abc"
byte[] t = transformer.TransformFinalBlock(s, 0, s.Length);
MessageBox.Show(Encoding.UTF8.GetString(t));
Добавлено через 10 минут
Да, кириллицу превращает в бред.. в C# достаточно будет UTF8 поменять на ASCII...
хмхм... замена UTF8 на Encoding.Default.GetString(t) - решила все проблемы...
Добавлено через 19 минут
Вот если кому-то понадобится:
Код php:
Код:
<?
function kf_encrypt($str)
{
$data = "";
$td = mcrypt_module_open('des', '', 'ecb', '');
$ckey = 'abcdefgh';
$iv = 'abcdefgh';
mcrypt_generic_init($td, $ckey, $iv);
$data = mcrypt_generic($td, $str);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
return $data;
}
$req = kf_encrypt('абвгд');
print base64_encode($req);
?>
Код C#:
Код:
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
des.Mode = CipherMode.ECB;
des.Padding = PaddingMode.Zeros;
byte[] key = Encoding.UTF8.GetBytes("abcdefgh");
byte[] IV = Encoding.UTF8.GetBytes("abcdefgh");
ICryptoTransform transformer = des.CreateDecryptor(key, IV);
byte[] s = Convert.FromBase64String("GjpbD3chK6E=");
byte[] t = transformer.TransformFinalBlock(s, 0, s.Length);
MessageBox.Show(Encoding.Default.GetString(t));
________________
«Шрёдингер ходил по комнате в поисках котёнка, а тот сидел в коробке ни жив ни мертв.»
Последний раз редактировалось iVs.Dark; 18.09.2011 в 23:16.
Причина: Добавлено сообщение
|
|
|
Пользователь сказал cпасибо:
|
|
19.09.2011, 14:44
|
#4
|
|
|
|
Разведчик
|
 Регистрация: 14.07.2011
 Сообщений: 27
 Популярность: 244
 Сказал(а) спасибо: 26
Поблагодарили 47 раз(а) в 37 сообщениях
|
Re: [C#] Шифрование и дешифрование...
А еще можно точно также, как в php, сделать)
Код:
//substr
string substr(string str, int start, int end){
string result = str.Remove(0,start);
result+=result.Remove((end-start),result.Length)
return result;
}
Вместо strlen() cв-во строки Length,
Вместо ord() приведение char к типу int,
Вместо chr() приведение int к char;
________________
Ну что лежишь ты Мурка, на краю дороги
Гробоваая крыышкаа над тобооой Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
|
|
|
19.09.2011, 14:55
|
#5
|
|
|
|
Разведчик
|
 Регистрация: 30.07.2011
 Сообщений: 19
 Популярность: 115
 Сказал(а) спасибо: 34
Поблагодарили 32 раз(а) в 30 сообщениях
|
Re: [C#] Шифрование и дешифрование...
________________
«Шрёдингер ходил по комнате в поисках котёнка, а тот сидел в коробке ни жив ни мертв.»
|
|
|
19.09.2011, 14:58
|
#6
|
|
|
|
Разведчик
|
 Регистрация: 14.07.2011
 Сообщений: 27
 Популярность: 244
 Сказал(а) спасибо: 26
Поблагодарили 47 раз(а) в 37 сообщениях
|
Re: [C#] Шифрование и дешифрование...
iVs.Dark, Да, я вижу. Просто к слову сказал) Лишним не будет)
________________
Ну что лежишь ты Мурка, на краю дороги
Гробоваая крыышкаа над тобооой Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Похожие темы
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
[Обсуждение] Шифрование
|
V.I.R.U.S. |
Общение и обсуждение |
8 |
09.08.2011 11:14 |
[Помогите!] Шифрование!
|
Илья БАРАН |
Общение и обсуждение, архив Point Blank |
3 |
01.07.2010 18:43 |
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 03:37.
|
 |