Posts Tagged “c#”

açtım vs.net 2008 i tıngır mıngır yazıyorum. basit bir monitoring servisi yazmaya uraşıom. bi exeyi izlicek işte kapanırsa geri açıcak mail atıcak falan. gel görki timer objemin tick i atmıyor. loga yazdırıom bişeler yok enable ediom yok aran aran buldum sonunda meğersem bu epey bilindik bir bug imiş

http://support.microsoft.com/kb/842793

diyorlarki eğer service yazıyorsanız System.Threading.Timer kullanın System.Timers.Timer. olaya bakki IDE de sürükle bırak yapınca türetilen timer kullanılmaması gerekenden :) ideyide kalaylattınız sabah sabah =)

Comments Yorum Yok »

serialize deserialize da anlatmadığım bişey var oda çıkan kodun arızası :) her otomatik sistemdeki olası ihtimali yüksek buglar gibi xsd dede bir bug var eğer alt nodelardan biri uzayabilir cinsdense xsd iki boyutlu array oluşturuyor ve bunu derserialize edemiyor çünkü gelen veri aslında bir boyutlu :)

aldığım hata

Unable to generate a temporary class (result=1).
error CS0030:

kodla anlatayim daha sağlıklı olucak.

private themeItemThemeSwatchesSwatch[][] themeSwatchesField;

diye bir field oluşturup buna bi properties le set get yapıodu ordada özel bi nane yok.

public static string SerializeToXmlString(object targetInstance)
{
string retVal = string.Empty;
TextWriter writer = new StringWriter();
XmlSerializer serializer = new XmlSerializer(targetInstance.GetType());
serializer.Serialize(writer, targetInstance);
retVal = writer.ToString();
return retVal;
}
public static object DeserializeFromXmlString(string objectXml, Type targetType)
{
object retVal = null;
XmlSerializer serializer = new XmlSerializer(targetType);
StringReader stringReader = new StringReader(objectXml);
XmlTextReader xmlReader = new XmlTextReader(stringReader);
retVal = serializer.Deserialize(xmlReader);
return retVal;
}

bu fonksiyonlardan geçiriyorum ve dalga çatlıo alt array e ulaşamıom meğer şöle olması gerekmiş:

private themeItemThemeSwatchesSwatch[] themeSwatchesField;

tek boyutlu array olunca mis gibi çalışdı. şimdi devamını yazmak lazım üşeniom…..

Comments Yorum Yok »

bu konular(serialize/deserialize) high level ortamların kullanmasını en çok sevdiğim şeyleridir. var olan bir objenizi pat die xml etmeye serialize. xml den geri obje yapmayada deserialize denir. dün bir rss okumam ondan bişeler yapasım var. normalde rss xml tabanlı bi data yapısı olduğundan xsl den geçirir cart diye html alırız. buraya kadar problem yok ama ya rss in içindeki item’larda

<namespace:name>gakguk</namespace:name>

gibi daha evvelden rss de olmayan veriler görürsek naparız. o zamanda xsl kullanılabilir ama aklımdaki işde gelen veriyle uğraşmak oraya bişe buraya bişeyler eklemek. bu durumda benim güzel bir parse ediciye ve object generator a  ihtiyacım var. bu iş için çook evvelden kullandığım xmlbeans var java ortamında. ki kraldır xml den xsd üretir ordanda gereken jarlara kadar hazırlar size projeye ekleyip fonksiyonları çağırmak kalır.

ortamımız .net  bunda da hazır bişey olmalıydı vardı neydi neydi neydi diye araken buldum (C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin) sonunda xsd die bir komut. bu komut aslında biz webservis eklediğimizde kod oluşturan tool. kendisi aynen xmlbeans deki inst2xsd gibi xml okuo xsd çıkarıo. xsd çıkıncada ordan c# veya vb.net generate edebilio işde argümanları /c:C# falan.

xsd xmlfile.xml

diyince xsd çıkıo hatta bu benim garip namespacelerle extend edilmiş rss de 3 tane xsd çıkarıo ortaya. ama devam ettiremiom. xsd den code çıkartırken aynı pathdeki diğer xsd leri bulamadığından şikayet edip patlıo. 2 3 saat uğraştım yok. elle xsd leri düzenledim yok. en sonunda xmlbeans den bakam dedim belki java dan c# a çevirrim. basit iş sonuçda string parse etmiyem die uğraşıom. xmlbeans de aynı hatayı vermezmi breh dedim.

bakınırken şöle bir komut denedim.

inst2xsdxmlfile.xsd xmlfile_app1.xsd xmlfile_app2.xsd

aha pat diye java kodu oldu. ya dedim lanet e topluca verince oluomuş. aynısını microsoft xsd içinde denedim ve oldu. ah ulen :) neyse demek oluyorki herşey otomatik olmuo otomatik şey içinde çok kurcalamak gerekebilio.

Comments 1 Yorum »

PBE password based encryption demek. bu ne demek şifreli şifreleme metodu. yani “abc” diye bi stringimiz var biz bunu şifrelemek istiyoruz ve kendimiza ait bi şifreyle bunu yapmak istiyoruz. mesele “123″ e göre şifrelencek. neyse daha önceki yazımda jasypt ve javasından bahsetmiştim. decrytpinide yaptım koyim bi yerde dursun dedim hoşuma gitti şukadarcık kod cirlop gibide çalışıo.

using System;
using System.IO;
using System.Text;
using System.Security.Cryptography;

namespace StandardPBEStringEncryptor
{
public static class CryptoLib
{
public static string EncryptId(string ID)
{
string result = "";
ID = "abc" + ID + "xyz";
byte[] salt = new byte[8];

RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
rng.GetBytes(salt);

System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
PKCSKeyGenerator kp = new PKCSKeyGenerator();
ICryptoTransform crypt = kp.Generate(
"kunteper",
salt,
1000,
1);

byte[] sonuc = crypt.TransformFinalBlock(encoding.GetBytes(ID), 0, encoding.GetBytes(ID).Length);

foreach (byte item in salt)
{
result += item.ToString("X2");
}
foreach (byte item in sonuc)
{
result += item.ToString("X2");
}
return result;
}
public static byte[] fromHexadecimal(String message)
{
if (message == null)
{
return null;
}
if ((message.Length % 2) != 0)
{
throw new Exception("bu iş olmaz mesaj bozuk");
}
try
{
byte[] result = new byte[message.Length / 2];
for (int i = 0; i < message.Length; i = i + 2)
{
int first = Convert.ToInt32("" + message[i], 16);
int second = Convert.ToInt32("" + message[i + 1], 16);
result[i / 2] = (byte)(0×0 + ((first & 0xff) << 4) + (second & 0xff));
}
return result;
}
catch (Exception e)
{
throw e;
}
}
public static string DecryptId(string ID)
{
byte[] pnlContent = fromHexadecimal(ID);
byte[] salt = new byte[8];
byte[] encryptedMessageKernel = new byte[24];
Array.Copy(pnlContent, salt, 8);
Array.Copy(pnlContent, 8, encryptedMessageKernel, 0, 24);

PKCSKeyGenerator kp = new PKCSKeyGenerator();
ICryptoTransform crypt = kp.Generate(
"kunteper"
, salt
, 1000
, 1);

byte[] sonuc = kp.Decryptor.TransformFinalBlock(encryptedMessageKernel, 0, encryptedMessageKernel.Length);
return Encoding.ASCII.GetString(sonuc).Replace("abc","").Replace("xyz","");
}
}

public class PKCSKeyGenerator
{
byte[] key = new byte[8], iv = new byte[8];
DESCryptoServiceProvider des = new DESCryptoServiceProvider();

public byte[] Key { get { return key; } }
public byte[] IV { get { return iv; } }
public ICryptoTransform Encryptor { get { return des.CreateEncryptor(key, iv); } }
public ICryptoTransform Decryptor { get { return des.CreateDecryptor(key, iv); } }

public PKCSKeyGenerator() { }
public PKCSKeyGenerator(String keystring, byte[] salt, int md5iterations, int segments)
{
Generate(keystring, salt, md5iterations, segments);
}

public ICryptoTransform Generate(String keystring, byte[] salt, int md5iterations, int segments)
{
int HASHLENGTH = 16;
byte[] keymaterial = new byte[HASHLENGTH * segments];
byte[] psbytes;
psbytes = Encoding.UTF8.GetBytes(keystring);

byte[] data00 = new byte[psbytes.Length + salt.Length];
Array.Copy(psbytes, data00, psbytes.Length);
Array.Copy(salt, 0, data00, psbytes.Length, salt.Length);

MD5 md5 = new MD5CryptoServiceProvider();
byte[] result = null;
byte[] hashtarget = new byte[HASHLENGTH + data00.Length];
for (int j = 0; j < segments; j++)
{
if (j == 0) result = data00;
else
{
Array.Copy(result, hashtarget, result.Length);
Array.Copy(data00, 0, hashtarget, result.Length, data00.Length);
result = hashtarget;
}

for (int i = 0; i < md5iterations; i++)
result = md5.ComputeHash(result);

Array.Copy(result, 0, keymaterial, j * HASHLENGTH, result.Length);
}

Array.Copy(keymaterial, 0, key, 0, 8);
Array.Copy(keymaterial, 8, iv, 0, 8);

return Encryptor;
}
}
}

biliyorum kırılır belkide kıranınız vardır bana fark etmez :) ben sevdim bu olayı.

sanırım bende çok okumadım olay bu pkcs#5

Comments Yorum Yok »

bi şekilde encrypt etmem gereken bi string problemim var normalde hiç uğraşmadığım kriptoloji hikayelerini kurcalamaya başlıyorum. olayım şu jasypt de bulunan StandardPBEStringEncryptor şifreleyicisiyle şifrelenmiş gibi bi string oluşturmak sanırım cipher de diolar yani şifreli veri. neyse en son bir örnek buldum ama çıkan sonuç nedense javadan çıkanla aynı boyda değil.

kurcalıom kurcalıom zaten anlamadığım bok örnek ve döküman az. en sonunda sikerim örneğini diyip. girdim java koduna başladım debug etmeye. meğersem salt+encryptedMessage yapmak gerekiomuş. bulduğum örnekse sadece encrypted ı geri gönderio sonradan kavradım olayı 8byte lık salt la 24 bytelık mesajı birleştirip yolluosunki karşı tarafda onu deşifre edebilsin. jasypt den de testimi yaptım dalga doğru çalışıo ferahladım. böle şeyleri çözmeside eğlenceli oluormuş.

Comments Yorum Yok »