IT정보공유/C#85 AES256 암호화, 복호화 주의사항 및 샘플 코드 VB6으로 AES256 암호화를 하다가 보니 다른 언어로 개발된 프로그램과 통신할때 이런 저런 문제가 많이 나오네요. 그래서 발생했던 문제점 관련하여 내용을 정리해 보았습니다. AES256 암호화시 중요 체크포인트 1. 암호화에 사용되는 키 2. 암호화에 사용되는 주요키 말고 IV라고 하는 키가 하나 더 있음 3. ChainingMode의 종류가 ECB, CBC, GCM 등 여러개가 있음 서로 다른 언어로 개발하여 암호화된 값을 프로토콜 전달하는 경우에는 위에 3가지가 맞아야합니다. 단 하나라도 틀리면 암호화되어 나온 결과값이 달라지게 됩니다. 그렇기 때문에 복호화를 해도 전혀 엉뚱한 값이 나오게 되고, 암호화된 값을 주고 받는 양쪽의 프로그램에서 같은 결과를 기대할 수 없게됩니다. 프로그램을 개발하실때.. IT정보공유/C# 2018. 10. 11. C# System.BadImageFormatException 발생원인과 해결방법 어느날 갑자기 멀쩡하게 컴파일 되던 프로젝트가 이상한 오류를 뱉어내더군요. 처음보는 에러였습니다. System.BadImageFormatException 파일이나 어셈블리 **.Framework... 여기에 종속되어 있는 파일이나 어셈블리중 하나를 로드할 수 없습니다. 프로그램을 잘못된 형식으로 로드하려고 했습니다. System.BadImageFormatException 발생 원인 처음에 이게 무슨 에러인가, 디버그 모드에서는 잘 빌드가 되고 실행파일도 실행이 잘 됐습니다. 그런데 릴리즈 모드로 빌드할 때만 위와 같은 에러가 나면서 빌드도 정상적으로 되지만 실행은 안되더라구요. 참고로 **.Framework 라는건 C# DLL 프로젝트였고, 프로젝트 참조가 되어 있던 상황입니다. 그래서 이게 무슨에러인가.. IT정보공유/C# 2018. 9. 7. C# TableLayoutPanel 을 이용한 2x2, 3x3, 4,4 등 행과 열 동일한 사이즈로 격자구성 방법 바둑판 배열이라고 해야하나요?아래 사진 처럼 표형태로 Panel을 동일한 사이즈로 균등하게 나열하고 싶을 때는 TableLayoutPanel 을 이용하면됩니다. 그럼 이제 코딩으로 어떻게 셋팅하는지 알아보도록 하겠습니다.우선 테이블 레이아웃을 지정할 때는 아래의 코드처럼 SetCellPosition()함수를 이용하시면 되겠습니다.3x3 사이즈로 9개의 칸으로 구성된 테이블 레이아웃을 만들겁니다. 테이블 레이아웃의 각 행(Row)과 열(Column)은 인덱스로 지정해줄 수 있고, 각 행과 열은 TableLayoutPanelCellPosition 을 이용해 지정해 줄 수 있습니다.그러면 해당 컨트롤이 원하는 행열에 따악 하고 얹어지는 겁니다. 위 사진 처럼 3x 배열을 만드려면 아래의 코드처럼 행과 열의 크.. IT정보공유/C# 2018. 8. 31. C# 오픈소스를 이용한 원격제어 프로그램 개발하기 (원격데스크탑, VNC, 팀뷰어) 원격제어 프로그램 어디까지 알고 계신가요? 제일 대표적인게 윈도우에서 제공되는 원격데스크탑(RDP)과 팀뷰어가 아닐까 싶습니다. 그 외에도 원격제어프로그램의 종류를 나열해 보자면 RealVNC, TigerVNC 등등 VNC류와, RAdmin 그리고 얼마전에 소개드렸던 알서포트등 다양한 종류의 원격제어 프로그램들이 있습니다. 이런 원격제어 프로그램을 직접 개발해 보면 어떨까요? c# 개발자들을 위한 VncSharp 이라는 오픈소스를 이용하면 쉽게 개발할 수 있습니다. GitHub와 Nuget으로 제공되기 때문에 비주얼 스튜디오에서 프로젝트 참조 하기도 쉽고요. 아래처럼 컨트롤로 제공이 되기 때문에 사용하기가 엄청 쉽습니다. 일반 사용자 컨트롤 올리듯이 폼위에 딱~ 하고 얹어놓으면 끝납니다. (프로그램은 클.. IT정보공유/C# 2018. 8. 22. C# 폴더 선택 다이알로그 박스 팝업 시키기 c# 에서 파일 선택창이 아닌 폴더 선택창을 띄우는 방법입니다. 실제 소스는 아주 간단해서 뭐 굳이 설명은 하지 않아도 샘플코드가 간단하니연습삼아 해보세요. FolderBrowerDialog를 이용하면 간단합니다. FolderBrowserDialog dialog1 = new FolderBrowserDialog(); dialog1.ShowDialog(); tbLocalImageFolder.Text = dialog1.SelectedPath; 아래 사진처럼 디렉토리 선택(폴더 찾아보기) 다이알로그가 팝업됩니다. 3줄만으로 끝나는 코딩, 즐겁지요? IT정보공유/C# 2018. 8. 17. c# 윈도우 폼 최대화시 윈도우 작업표시줄 가리지 않는 방법 폼 사이즈를 최대화 할 경우 아래와 같이 FormWindowState를 최대화로 적용하여 주면 됩니다. this.WindowState = FormWindowState.Maximized; 그러나, 이렇게 최대화 시켰을 경우 작업표시줄(윈도우 타스크바)까지 덮어씌워버려 최대화된 윈도우폼 때문에 작업표시줄이 가려져 사용이 불편해 질 수 있습니다. 이를 방지하기 위해선 아래와 같은 간단한 코드를 삽입하면 됩니다. this.MaximizedBounds = Screen.FromHandle(this.Handle).WorkingArea; 그러면 폼 크기를 최대화 하더라도 작업표시줄 영역을 덮어버리지 않고 작업표시줄을 제외한 영역에서 최대화가 됩니다. IT정보공유/C# 2018. 8. 7. c# 문자열에서 숫자만 추출하는 방법 아주 심플합니다. using System.Text.RegularExpressions; //네임스페이스 참조 string strText = "1가나다,2마바사,3아자차"; string strTmp = Regex.Replace(strText, @"\D", ""); int iNumber = int.Parse(strText); 이렇게 정규식을 이용해서 간단하게 문자열안에서 숫자만 추출해 낼 수 있습니다. 복잡한 문자열 처리에 도움이 되는 RegularExpressions (Regex) 알아두시면 도움이 많이 되실거에요. Regex 함수들 1) Match Regex.Match(string input, string pattern); //일치하는 문자열 찾기 2) bool Regex.IsMatch(string inp.. IT정보공유/C# 2018. 7. 4. c# ActiveX Control UI 등록 방법 C#으로 프로그래밍 개발을 할 때, 타 회사에서 제공되는 OCX(ActiveX)를 이용하거나, 자체 개발한 ActiveX 컨트롤을 사용해야 할때가 있습니다. 저는 ActiveX를 한동안 안쓰다가, 갑자기 사용해야 할 일이 생기니 어떻게 해야하나갑자기 머리가 멍하더라고요. 소스를 인수인계 받은거라 그전에는 C# 에서 ActiveX를 사용해 본적이 없었던것 같습니다.(기억이 안나는건가?) 뭐 아무튼 일반적으로 ActiveX의 확장자인 OCX 파일의 경우는 레지스트리에 등록을 해줘야 합니다.많이 들어보셨을 수도 있는데, 아래의 명령어를 도스명령창이라고 불리우는 cmd 창에서 실행해줘야 합니다. regsvr32 [ocx파일명].ocx 그러면 정상적으로 등록되었다는 메세지가 뜨고, 안되는 경우는 관리자 권한으로 .. IT정보공유/C# 2018. 7. 3. C# OpenCvSharp을 이용한 사각형 검출 방법 OpenCV 좀 맛뵈기로 사용해 보고 있는데, 생각보다 많이 어렵네요. C#에서 사용이 가능은 OpenCvSharp을 이용한 사각형 검출에 관한 건데, 저도 접한지 몇 일 안되다 보니 도움이 전혀 안될 수도 있겠으나, 어쨌건 제가 공부한거고 까먹지 않고, 아는선에서 적당히 정보를 공유하고자 합니다. AP_CI.png라는 이미지 파일을 준비했습니다. 사각형 검출을 할 꺼니까요. 위 이미지에서 사각형에는 빨간색을 칠할겁니다. 소스를 한번에 보는게 좋을 것 같네요. C# OpenCV 사각형 검출 샘플 소스 // Mat ms = new Mat(@"AP_CI.png", ImreadModes.GrayScale); //원본 사진을 흑백으로 읽어옴 ms = ms.Canny(75, 200, 3, true); // 외곽선.. IT정보공유/C# 2018. 3. 13. C#에서 OpenCV 를 사용하는 방법 - OpenCVSharp 환경구축과 ffmpeg 사용 영상처리 프로그래밍을 하는데에는 OpenCV라고 하는 오픈소스가 많이 사용됩니다. 뭐 대부분의 오픈소스가 그렇지만 C/C++로 개발되어 있어서 다른 프로그래밍 언어를 사용하는 사람에겐 바로 접근하기가 어렵습니다. 그런데 누군가가 github에 C#을 위한 OpenCVSharp 을 배포하고 있어서 접근이 쉬워졌습니다. https://github.com/shimat/opencvsharp 위 경로에서 받을 수 있습니다. 요즘은 nuget package로 배포가 되어서 설치가 쉬워졌는데, 저처럼 Visual Studio 2008 을 사용하는 사람에겐 무쓸모네요.ㅋ 위 페이지에 접속해서 스크롤을 쭈우욱 아래로 내리다 보면 릴리즈된 DLL만 받는 링크가 나옵니다. 컴파일 환경에 맞게 x86(32비트)용이나 x64(.. IT정보공유/C# 2018. 3. 10. c#에서 C,C++로 만들어진 DLL 사용시, 콜백함수에서 한글이 깨질때 처리 방법 c++이나 c언어로 개발된 DLL을 C#에서 이용해야 할 경우C에 정의된 함수들을 DllImport를 통해 먼저 C#에서 선언을 해줘야 합니다.다들 이미 아시겠지만.일반적인 함수는 다들 아실거고 콜백 함수 부분만 설명을 드리겠습니다. * C, C++로 개발된 DLL에 정의된 콜백함수 원형 (두번째 파라미터에서 문자열(한글)이 넘어옴) typedef char*(*DLLCALLBACK)(char*, char*, int);void __stdcall SetCallBack(void* a_pHandle, DLLCALLBACK a_pCallBack); 그리고 DLL 함수와 콜백을 C#에서 사용하기 위한 선언부 public delegate void DLLCALLBACK(String Code, IntPtr Data, i.. IT정보공유/C# 2017. 10. 30. 외부 데이터베이스 드라이버 (1)에서 예기치 않은 오류가 발생하였습니다. 2017년 10월 11일 윈도우즈 업데이트 이후, 전에 개발해 놓은 프로그램이 문제가 생기기 시작했습니다. 다름이 아닌 ADO를 이용한 엑셀파일 임포트(Import) 불러오기 기능이 오류를 일으키고 있습니다. 오류 내용은 "외부 데이터베이스 드라이버 (1)에서 예기치 않은 오류가 발생하였습니다." C#에서 엑셀파일에 접근 할때는 보통 Microsoft JET Database Engine을 이용하는데 JET 엔진 자체가 엑셀파일을 읽을 때 에러가 나니 좀 황당하고 난감했습니다. OLE객체를 이용한 접근이기에 문제가 생겨도 사실상 제가 수정을 할 수도 없는 노릇이고 보이 인터넷을 뒤지다 찾아냈네요. 윈도우즈 서비스팩 업데이트가 되면서 부터 Microsoft.Jet.OLEDB.4.0을 이용할 수 없게 되어버린.. IT정보공유/C# 2017. 10. 13. 이전 1 2 3 4 5 6 7 8 다음 💲 추천 글 반응형