Visual C# .NET을 사용하여 폼 인증에서 사용할 키를 만드는 방
http://support.microsoft.com/default.aspx?scid=312906


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

namespace Crypto
{
    public class KeyCreator
    {
        public static void Main(String[] args)
        {			
            String[] commandLineArgs = System.Environment.GetCommandLineArgs();
            string decryptionKey = CreateKey(System.Convert.ToInt32(commandLineArgs[1]));
            string validationKey = CreateKey(System.Convert.ToInt32(commandLineArgs[2]));

            Console.WriteLine("", validationKey, decryptionKey);
        }	

        static String CreateKey(int numBytes) 
        {
            RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
            byte[] buff = new byte[numBytes];

            rng.GetBytes(buff);
            return BytesToHexString(buff);
        }

        static String BytesToHexString(byte[] bytes) 
        {
            StringBuilder hexString = new StringBuilder(64);

            for (int counter = 0; counter < bytes.Length; counter++) 
            {
                hexString.Append(String.Format("{0:X2}", bytes[counter]));
            }
            return hexString.ToString();
        }
    }
}

저작자 표시 비영리 변경 금지
신고

'개발 > C# / ASP.NET' 카테고리의 다른 글

[MVC] DropDownList에 Enum 바인딩  (0) 2011.09.21
C# machine key 생성하기  (0) 2011.07.05
[MVC] EnumDropDownList  (0) 2011.06.22
C# 한글깨짐 처리  (1) 2011.04.20
 이미 사용중인 Sybase에 접근해서 내용을 가져오는데, 도무지 한글이 깨진것을 어떻게 할수가 없어서...
이렇게 확인부터 하자

깨진 한글을 어떻게 제대로 표시할지 찾아보자..
원본 문자열이 어떤방식의 charset으로 되어 있는지.. 어떻게 다시 제대로 표시할지 찾아보기 위해 간단한 메서드를 만들었다.

[코드]
       public void convertCheck(string str)
        {
            Encoding encKr = Encoding.GetEncoding("euc-kr");
            EncodingInfo[] encods = Encoding.GetEncodings();
            Encoding destEnc = Encoding.UTF8;

            foreach (EncodingInfo ec in encods)
            {
                Encoding enc = ec.GetEncoding();
                byte[] sorceBytes = enc.GetBytes(str);
                byte[] encBytes = Encoding.Convert(encKr, destEnc, sorceBytes);

                System.Diagnostics.Debug.WriteLine(string.Format("{0}({1}) : {2}", enc.EncodingName, enc.BodyName, destEnc.GetString(encBytes)));
            }            
        }

string  str 을 받아서 지원가능한 모든 인코딩으로 돌려 표시한다.
이때 제대로 표시되는 것이 있다면 해당 인코딩을 쓰면 될 것이다. ㅋㅋ
몇시간을 지x을 했네 그려~ ㅠㅠ
Sybase 정말~ 쓰기싫다.. 잘 붙지도 않고.. 한글깨지고... 덴장!!!!
 
저작자 표시 비영리 변경 금지
신고

'개발 > C# / ASP.NET' 카테고리의 다른 글

[MVC] EnumDropDownList  (0) 2011.06.22
C# 한글깨짐 처리  (1) 2011.04.20
자동 생성된 Machinekey 읽기  (0) 2011.04.15
[C#] sysbase 접속  (0) 2011.02.21
  1. 그냥떠나는거야 2017.03.30 16:10 신고

    다른 서버에서 json을 받았는데 한글이 깨져서 스트레스 였는데, 덕분에 해결했습니다 .
    감사합니다. ^^

Web.Config에 따로 설정을 하면 machinekey를 읽을 필요는 없겠지만서도.. 
나처럼 필요한 경우가 생길지도 몰라 구글링을 통해서 얻은 정보를 공유한다.


protected void Page_Load (object sender, EventArgs e)
{
  MachineKeySection section = (MachineKeySection) 
      ConfigurationManager.GetSection ("system.web/machineKey");

  BindingFlags flags = 
      BindingFlags.Instance | 
      BindingFlags.NonPublic | 
      BindingFlags.GetProperty;

  Func propertyReader = name => (byte[]) section
      .GetType ()
      .GetProperty (name, flags)
      .GetValue (section, null);

  string key = ConvertToHex (
    propertyReader ("DecryptionKeyInternal"));
    
  string iv = ConvertToHex (
    propertyReader ("ValidationKeyInternal"));
}

private string ConvertToHex (byte[] binary)
{
  return binary.Aggregate (
      new StringBuilder (), 
      (acc, c) => acc.AppendFormat ("{0:x2}", c), 
      acc => acc.ToString());
}// 뒤에요거 왜붙지? => 


출처 : 
http://aspnetresources.com/blog/how_to_read_auto_generated_machinekey 
저작자 표시 비영리 변경 금지
신고

'개발 > C# / ASP.NET' 카테고리의 다른 글

C# 한글깨짐 처리  (1) 2011.04.20
자동 생성된 Machinekey 읽기  (0) 2011.04.15
[C#] sysbase 접속  (0) 2011.02.21
Windows 2008 Server - WCF 404.7 error  (0) 2010.12.28
재 프로젝트에 있는 모든 UI 클래스 명을 얻어와 보자!

    1 namespace NSCL

    2 {

    3     public partial class Form1 : Form

    4     {

    5         public Form1()

    6         {

    7             InitializeComponent();

    8             this.Load += new EventHandler(Form1_Load);

    9         }

   10 

   11         void Form1_Load(object sender, EventArgs e)

   12         {

   13             GetClassNames();

   14         }

   15 

   16         private void GetClassNames()

   17         {

   18             List<string> clsNames = new List<string>();

   19             Assembly asm = Assembly.GetExecutingAssembly();

   20 

   21             foreach (Type t in asm.GetTypes())

   22             {

   23                 if (t.BaseType.Name == "Form")

   24                 {

   25                     clsNames.Add(t.Name);

   26                 }

   27             }

   28 

   29             listBox1.DataSource = clsNames;

   30         }

   31     }

   32 }


소스는 현재 실행중인 어셈블리를 얻어와서, window Form 클래스를 상속받은 UI 클래스만 가져와
ListBox에 뿌려준다.

저작자 표시 비영리 변경 금지
신고
갑자기 생각나서 간단히 구현해 봤습니다.

스플래시 윈도우에선 아무것도 수행안하고 그냥 메세지만..
보통은 필요한 데이터를 로딩한다던가, 어디다(?) 연결작업을 수행한다던가 머 그렇지요.. 아님 로고를 보여준다던가..

우선 윈폼 프로젝트를 하나 생성하고요..

윈도우를 두개 만듭니다.
1. 메인 윈도우
2. Splash 윈도우

메인 윈도우가 나타나기 전에 Splash 윈도우를 먼저 띄우고 필요한 처리가 다 되면 Splash 윈도우를 닫고
메인 윈도우를 나타내게 됩니다.

소스는 머 대충 아래와 같이 

program.cs

    1 static class Program

    2 {

    3         delegate void SampleDelegate();

    4 

    5 

    6         /// <summary>

    7         /// 해당 응용 프로그램의 주 진입점입니다.

    8         /// </summary>

    9         [STAThread]

   10         static void Main()

   11         {

   12 

   13             Application.EnableVisualStyles();

   14             Application.SetCompatibleTextRenderingDefault(false);

   15 

   16             SplashForm splashScreen = new SplashForm();

   17             Application.Run(splashScreen);  // Splash window 띄우기

   18 

   19             Application.Run(new Form1());   // 메인 윈도우 띄우기

   20         }

   21 

   22 }


SplashForm.cs

    1 public partial class SplashForm : Form

    2 {

    3         delegate void TestDelegate(string msg);

    4         delegate void TestDelegate2();

    5 

    6         public SplashForm()

    7         {

    8             InitializeComponent();

    9 

   10             System.Threading.Thread thread = new System.Threading.Thread(Thread1);

   11             thread.Start();

   12         }

   13 

   14         private void showText(string msg)

   15         {

   16             lblCount.Text = msg;

   17         }

   18 

   19         private void formClose()

   20         {

   21             this.Close();

   22         }

   23 

   24         private void Thread1()

   25         {

   26             for(int i=100; i > 0; i--)

   27             {

   28                 this.Invoke(new TestDelegate(showText), i.ToString());

   29                 System.Threading.Thread.Sleep(100);

   30             }

   31 

   32             this.Invoke(new TestDelegate2(formClose));

   33         }

   34 }


splash윈도우 화면엔 라벨을 하나 만들고 100 부터 0까지 숫자를 찍어댓다.

이렇게 간다히 Splash화면을 하나 심심풀이로 만들어 봤다.

저작자 표시 비영리 변경 금지
신고
c#
주어진 수를 일의자리는 버리고, 10의 자리는 반올림 하는 프로그램을 작성하라
  (단, 내부함수 - Round -는 사용할 수 없슴).

using System;

 

namespace ConsoleClient

{

    class Program

    {

        static void Main(string[] args)

        {

            int a = 6510;

            //일자리수는 0으로 , 10자리는 반올림..

            int b = a / 10;

 

            int result = Int16.Parse(b.ToString() + "0");

 

            char[] ch = result.ToString().ToCharArray();

            char[] ch2 = new char[ch.Length + 1];

            int flag = 0;

 

            if (Int16.Parse(ch[ch.Length - 2].ToString()) > 4)

            {

                //Console.WriteLine("반올림:" + ch[ch.Length - 2].ToString());

                ch[ch.Length - 2] = '0';

                try

                {

                    ch[ch.Length - 3] = Char.Parse((Int16.Parse(ch[ch.Length - 3].ToString()) + 1).ToString());

                    flag = 0;

                }

                catch (IndexOutOfRangeException)

                {

                    ch2[0] = '1';

                    for (int i = 1; i <= ch.Length; i++)

                    {

                        ch2[i] = '0';

                    }

                    flag = 1;

                }

            }

            else

            {

                //Console.WriteLine("반내림:" + ch[ch.Length - 2].ToString());

                ch[ch.Length - 2] = '0';

                flag = 0;

            }

 

            if (flag == 0)

                Console.WriteLine(new String(ch));

            else

                Console.WriteLine(new String(ch2));

 

            Console.Read();

        }

    }

}

요거~ 간단하게 생각했는데.. 생각보다 기네^^
결과는 제대로 나오지만.. 제대로 한건지 원.. 짧은 시간에 생각해 낼려니.. 요렇게 길게 밖에 생각이 안나네..
근데.. 내가 이걸 왜 했지!

시원한 가을이네요^^ 좋은 하루 보내시길...


저작자 표시 비영리 변경 금지
신고

'개발 > C# / ASP.NET' 카테고리의 다른 글

Enum Type 데이터를 바인딩하기  (0) 2009.03.18
C# 간단 트레이닝 1  (0) 2008.10.17
asp.net paging source  (0) 2008.10.15
ASP.NET 간단 팁들..  (0) 2008.10.09


이미지 그리기 샘플..
심심풀이로 그려봤다.

요런 막대그래프(?)가 생겨난다.



소스

using System;

using System.Collections.Generic;

using System.Web;

using System.Web.UI;

 

using System.Drawing;

using System.Drawing.Imaging;

 

public partial class testGraph : System.Web.UI.Page

{

    Bitmap b;

    Graphics g;

 

    protected void Page_Load(object sender, EventArgs e)

    {

        Graph();

    }

 

    private void Graph()

    {

        b = new Bitmap(500, 25);

        g = Graphics.FromImage(b);

 

        Brush txtBrush = new SolidBrush(Color.Yellow);

        Brush bkBrush = new SolidBrush(Color.Gray);

        Brush brush = new SolidBrush(Color.Blue);

 

        HttpContext.Current.Response.ContentType = "image/jpeg";

        g.FillRectangle(bkBrush, 0, 0, 500, 25);

        g.FillRectangle(brush, 0, 0, 180, 25);

        g.DrawString("달성률(36%)", new Font("arial", 9), new SolidBrush(Color.White), 1, 5);

        g.DrawString("전체건수(50건)", new Font("arial",8), txtBrush, 410, 5);

 

        b.Save(HttpContext.Current.Response.OutputStream, ImageFormat.Jpeg);

 

        g.Dispose();

        b.Dispose();

    }

}


간단하다^^  그래도 막상 필요할때 잘 생각 안난다.
그림 쳐바를일이 그리 많지 않지만.. 그래도 가끔 요런거 좋아라 하는 애들있다..

그럼 오늘도.. 막코딩을 위해^^

저작자 표시 비영리 변경 금지
신고

'개발 > C# / ASP.NET' 카테고리의 다른 글

ASP.NET 간단 팁들..  (0) 2008.10.09
웹 Bitmap 그리기  (0) 2008.10.08
windows2008 Image thumbnail 표시  (0) 2008.09.05
설치된 HotFix 조회하기  (0) 2008.08.28
c#

내 컴퓨터에 설치된 HotFix 를 나열합니다.

    1 using System;

    2 using System.Management;

    3 

    4 public class ListHotFixes

    5 {

    6     public static void Main()

    7     {

    8             ManagementClass cls = new ManagementClass(@"\\.\root\cimv2:Win32_QuickFixEngineering");

    9             ManagementObjectCollection col = cls.GetInstances();

   10 

   11             foreach(ManagementObject obj in col)

   12             {

   13                     string desc = (string)obj["Description"];

   14                     if(desc != "")

   15                         Console.WriteLine(desc);

   16             }

   17     }

   18 }



어때, 유용하지 않나요?..

신고
c#
System.Net.NetworkInformation를 이용해서 내컴퓨터의 네트웍정보표시하기


    1 using System;

    2 using System.Net;

    3 using System.Net.NetworkInformation;

    4 

    5 namespace NetworkCard

    6 {

    7     public class NetworkInterfaces

    8     {

    9 

   10         public static void Main(string[] args)

   11         {

   12             IPGlobalProperties computerProperties = IPGlobalProperties.GetIPGlobalProperties();

   13             NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();

   14             Console.WriteLine("Interface information for {0}.{1}    ", computerProperties.HostName, computerProperties.DomainName);

   15             if (nics == null || nics.Length < 1)

   16             {

   17                 Console.WriteLine("  No network interfaces found.");

   18                 return;

   19             }

   20 

   21             Console.WriteLine("  Number of interfaces .................... : {0}", nics.Length);

   22             foreach (NetworkInterface adapter in nics)

   23             {

   24                 IPInterfaceProperties properties = adapter.GetIPProperties();

   25                 Console.WriteLine();

   26                 Console.WriteLine(adapter.Description);

   27                 Console.WriteLine(String.Empty.PadLeft(adapter.Description.Length, '='));

   28                 Console.WriteLine("  Interface type .......................... : {0}", adapter.NetworkInterfaceType);

   29                 Console.WriteLine("  Physical Address ........................ : {0}", adapter.GetPhysicalAddress().ToString());

   30                 Console.WriteLine("  Operational status ...................... : {0}", adapter.OperationalStatus);

   31                 string versions = "";

   32 

   33                 // Create a display string for the supported IP versions.

   34                 if (adapter.Supports(NetworkInterfaceComponent.IPv4))

   35                 {

   36                     versions = "IPv4";

   37                 }

   38                 if (adapter.Supports(NetworkInterfaceComponent.IPv6))

   39                 {

   40                     if (versions.Length > 0)

   41                     {

   42                         versions += " ";

   43                     }

   44                     versions += "IPv6";

   45                 }

   46                 Console.WriteLine("  IP version .............................. : {0}", versions);

   47 

   48                 // The following information is not useful for loopback adapters.

   49                 if (adapter.NetworkInterfaceType == NetworkInterfaceType.Loopback)

   50                 {

   51                     continue;

   52                 }

   53                 Console.WriteLine("  DNS suffix .............................. : {0}", properties.DnsSuffix);

   54 

   55                 string label;

   56                 if (adapter.Supports(NetworkInterfaceComponent.IPv4))

   57                 {

   58                     IPv4InterfaceProperties ipv4 = properties.GetIPv4Properties();

   59                     Console.WriteLine("  MTU...................................... : {0}", ipv4.Mtu);

   60                     if (ipv4.UsesWins)

   61                     {

   62 

   63                         IPAddressCollection winsServers = properties.WinsServersAddresses;

   64                         if (winsServers.Count > 0)

   65                         {

   66                             label = "  WINS Servers ............................ :";

   67                         }

   68                     }

   69                 }

   70 

   71                 Console.WriteLine("  DNS enabled ............................. : {0}", properties.IsDnsEnabled);

   72                 Console.WriteLine("  Dynamically configured DNS .............. : {0}", properties.IsDynamicDnsEnabled);

   73                 Console.WriteLine("  Receive Only ............................ : {0}", adapter.IsReceiveOnly);

   74                 Console.WriteLine("  Multicast ............................... : {0}", adapter.SupportsMulticast);

   75 

   76                 Console.WriteLine();

   77             }

   78         }

   79 

   80     }

   81 }

참고 : http://msdn2.microsoft.com/en-us/library/system.net.networkinformation.networkinterface.aspx

신고

'개발 > C# / ASP.NET' 카테고리의 다른 글

web query분석기  (0) 2008.08.27
C#에서 네트웍정보 조회하기  (0) 2008.08.27
C#에서 Oracle 연결하기  (0) 2008.05.16
Echo Server  (0) 2008.05.13
C#에서 Oracle을 연결해 보자~

1. Oracle을 사용하기 위해 참조추가를 한다.
    참조추가를 선택해서 Oracle.DataAccess 를 추가한다.

2. 이제 코딩해 보자~   


using System;

using System.Data;

using Oracle.DataAccess.Client;


namespace OracleConnTest

{

    class Program

    {

        static void Main(string[] args)

        {

            string oradb = "User Id=scott;Password=tiger;Pooling=false;Data Source=;";


            OracleConnection conn = new OracleConnection(oradb);

            conn.Open();


            string sql = "SELECT * FROM dev_member"; //임의로 만들고 데이터를 넣었다.

            OracleCommand cmd = new OracleCommand(sql, conn);

            cmd.CommandType = CommandType.Text;


            OracleDataReader dr = cmd.ExecuteReader();

            while (dr.Read())

            {

                Console.Write(dr[0].ToString() + "\t");

                Console.Write(dr.GetString(1).ToString() + "\t" + dr.GetString(2) + "\t");

                Console.WriteLine(dr[3].ToString() + "\t" + dr.GetString(4) + "\t" + dr.GetString(5));

            }

            conn.Clone();

            conn.Dispose();


            Console.ReadLine();


        }

    }

}


너무 간단하다~
신고

'개발 > C# / ASP.NET' 카테고리의 다른 글

web query분석기  (0) 2008.08.27
C#에서 네트웍정보 조회하기  (0) 2008.08.27
C#에서 Oracle 연결하기  (0) 2008.05.16
Echo Server  (0) 2008.05.13

+ Recent posts