Microsoft MVP성태의 닷넷 이야기
reflection, static, override 질문입니다. [링크 복사], [링크+제목 복사],
조회: 13000
글쓴 사람
흰털너부리
홈페이지
첨부 파일
 

암호화 테스트 한 솔루션입니다.

AES256 tripleDes 검증했습니다.

잘작동하는데 왜 작동하는지 궁금해서 질문 드립니다.

여기에 소스 코드 올려놨습니다.

https://github.com/jys923/CryptSample.git

TripleDESSample/MyDES.cs의 CreateWeakEncryptor 질문 입니다.

.net tripleDes가 약한 키는 못쓰게 막혀있습니다.

약한키도 사용가능하게 CreateWeakEncryptor 로 키 체크 부분을 우회한 코드입니다.

데충 리플렉션으로 약한 키 생성 부분을 우회 한건 알것 같습니다.

Q. 그런데 MyDES 가 스태틱인 이유?
Q. 스태틱인데 MyDES.CreateWeakEncryptor 가 아니고
Q. new TripleDESCryptoServiceProvider().CreateWeakEncryptor 이렇게 사용 가능한 이유
Q. using에 참조도 없는데 CreateWeakEncryptor 사용 가능한 이유
Q. public static ICryptoTransform CreateWeakEncryptor(this TripleDESCryptoServiceProvider cryptoProvider, byte[] key, byte[] iv)
this 왜 있는건지?

Q. 해당 코드를 아예 다른 파일로 만들어서 클래스로 분리 해야 작동하는 이유
#region TripleDESCryptoExtensions
        public static ICryptoTransform CreateWeakEncryptor(this TripleDESCryptoServiceProvider cryptoProvider, byte[] key, byte[] iv)
        {
            // reflective way of doing what CreateEncryptor() does, bypassing the check for weak keys
            MethodInfo mi = cryptoProvider.GetType().GetMethod("_NewEncryptor", BindingFlags.NonPublic | BindingFlags.Instance);
            object[] Par = { key, cryptoProvider.Mode, iv, cryptoProvider.FeedbackSize, 0 };
            ICryptoTransform trans = mi.Invoke(cryptoProvider, Par) as ICryptoTransform;
            return trans;
        }

        public static ICryptoTransform CreateWeakEncryptor(this TripleDESCryptoServiceProvider cryptoProvider)
        {
            return CreateWeakEncryptor(cryptoProvider, cryptoProvider.Key, cryptoProvider.IV);
        }

        public static ICryptoTransform CreateWeakDecryptor(this TripleDESCryptoServiceProvider cryptoProvider, byte[] key, byte[] iv)
        {
            // reflective way of doing what CreateDecryptor() does, bypassing the check for weak keys
            MethodInfo mi = cryptoProvider.GetType().GetMethod("_NewEncryptor", BindingFlags.NonPublic | BindingFlags.Instance);
            object[] Par = { key, cryptoProvider.Mode, iv, cryptoProvider.FeedbackSize, 1 };
            ICryptoTransform trans = mi.Invoke(cryptoProvider, Par) as ICryptoTransform;
            return trans;
        }

        public static ICryptoTransform CreateWeakDecryptor(this TripleDESCryptoServiceProvider cryptoProvider)
        {
            return CreateWeakDecryptor(cryptoProvider, cryptoProvider.Key, cryptoProvider.IV);
        }
        #endregion



전부 static에 연관되는 이야기 같은데 잘모르겠네요.

static은 정적 처음 실행 할때 생성, new 말고 클래스 명으로 사용 가능 이런 것 뿐이 모르네요.

긴 질문 읽어주셔서 감사합니다.








[최초 등록일: ]
[최종 수정일: 10/27/2022]


비밀번호

댓글 작성자
 



2022-10-27 06시58분
질문의 내용은 C# 3.0에 나온 "확장 메서드"를 기본적으로 모르기 때문에 나오는 것입니다. 그걸 공부하신 다음에,

Extension Methods (C# Programming Guide)
; https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/extension-methods

그래도 이해가 안 되는 부분이 있으면 다시 질문해 주세요.

참고로, 제 책을 가지고 있다면 "8.7 확장 메서드" 절을 보시면 됩니다.
정성태

... 76  77  78  79  80  [81]  82  83  84  85  86  87  88  89  90  ...
NoWriterDateCnt.TitleFile(s)
456guest9/7/200616082데이타셋 암호화 방법...이 있을까요? [2]
451임은주8/31/200615698mms 스트림을 로컬 파일로 저장해주는 프로그램 에 대해서 여쭤볼께요 [1]
448guest8/28/200616354서버인증서및클라이언트인증서 발급
449정성태8/28/200615706    답변글 [답변]: 서버인증서및클라이언트인증서 발급
450ligh...8/29/200616106        답변글 [답변]: [답변]: 서버인증서및클라이언트인증서 발급 [3]
468light9/28/200615959            답변글 [답변]: [답변]: [답변]: 서버인증서및클라이언트인증서 발급
472정성태10/5/200616506    답변글 [답변]: 서버 인증서 및 클라이언트 인증서 발급
475ligh...10/11/200615377        답변글 [답변]: [답변]: 서버인증서및클라이언트인증서 발급
446윤경재8/20/200620972COM+ 프로젝트 디버깅 방법. [2]파일 다운로드1
442이남호8/7/200615835스마트클라이언트에 Farpoint Winform을 이용했는데 배포가 안되요.
443이남호8/7/200617772    답변글 [답변]: 스마트클라이언트에 Farpoint Winform을 이용했는데 배포가 안되요.
441강혜영8/5/200616750SHDocVw를 이용한 익스플로어 제어
444정성태8/7/200614836    답변글 [답변]: SHDocVw를 이용한 익스플로어 제어
445강혜영8/8/200615504        답변글 [답변]: [질문]: SHDocVw를 이용한 익스플로어 제어 [1]
437혀기7/25/200614109DirectoryEntry의 Childrend에 Add할때 엑세스가 거부됩니다~ㅜㅜ [2]파일 다운로드1
436조성택7/24/200613940IE를 가로채서 그리고 싶을때.. [1]
439태기7/25/200614646    답변글 [답변]: IE를 가로채서 그리고 싶을때..(재질문) [1]파일 다운로드1
435이영균7/21/200615314작그마한 스마트클라이언트 프로젝트를 진행하고 있습니다. [1]파일 다운로드1
431혁이7/19/200614001UpdatePanel(Atlas)위의 SmartClient가 이벤트후 사라집니다. ㅜㅜ파일 다운로드1
432정성태7/19/200614393    답변글 [답변]: UpdatePanel(Atlas)위의 SmartClient가 이벤트후 사라집니다. ㅜㅜ
433혁이7/20/200615159        답변글 [답변]: [답변]: UpdatePanel(Atlas)위의 SmartClient가 이벤트후 사라집니다. ㅜㅜ
434정성태7/20/200616159            답변글 [답변]: [답변]: [답변]: UpdatePanel(Atlas) 위의 SmartClient가 이벤트 후 사라집니다. ㅜㅜ [1]
429kwt7/12/200615379ActiveX 개발을 배우고 싶은데요 [3]
427이홍자7/11/200615607스마트 클라이언트 실행 시 그리드의 체크박스가 안보여요.. [1]
426정보문7/11/200616298액티브X 설치2 [1]
423이방은7/9/200615149리소스 임베디드 질문요.. [1]파일 다운로드1
... 76  77  78  79  80  [81]  82  83  84  85  86  87  88  89  90  ...