본문 바로가기

Mac&iOS

iOS에서 RSA암호화(5) 이전글 : 2017/09/19 - [Mac/iOS] - iOS에서 RSA암호화(4) 여기까지를 종합하면 iOS에서 RSA암호화를 할 수 있습니다. 앞에서 언급했다시피 Cheon Brave님 블로그를 참고해서 OpenSSL을 프로젝트에 추가하고 구현하였습니다. //// MLRSAEncryptor.m// OpenSSLTest//// Created by zamcom on 2017. 9. 19..// Copyright © 2017년 zamcom. All rights reserved.// #import "MLRSAEncryptor.h"#include #include @implementation MLRSAEncryptor - (NSString*)encryption:(NSString*)planText{ char mo.. 더보기
iOS에서 RSA암호화(4) 이전글 : 2017/09/19 - [Mac/iOS] - iOS에서 RSA암호화(3) 1. ASN.1 그다음로 설명할게 ASN.1 이다. 참고자료 A Layman's Guide to a Subset of ASN.1, BER, and DER 2017/09/19 - [Mac/iOS] - iOS에서 RSA암호화(1) 에서 설명을 위해 생성한 공개키는 ASN.1 포맷으로 되어 있다. 이중에 우리가 암호화에 필요한 N(Modulus)와 e(public exponent)를 구하려면 ASN.1 구조를 알아야 한다. 파서를 이용하거나, 서버에서 각각의 값을 가져올 수도 있겠지만, 여기서는 공개키에서 직접 Modulus와 public exponent 값을 추출해서 넣는 방법을 쓰도록 한다. 2. 파싱하기 자세한 구조를 살.. 더보기
iOS에서 RSA암호화(3) 이전글 : 2017/09/19 - [Mac/iOS] - iOS에서 RSA암호화(2) 1. RSA 원리 RSA 구조체를 살펴보면 n, e, d, p, q 와 같은 변수가 나오는데 이를 이해하려면 RSA에 대해서 약간의 지식이 필요하다. RSA는 소수(Prime Number)를 이용한 공개키 암호 시스템이다. 어떤 수가 임의의 두 큰 소수의 곱으로 되어 있을 때, 이 두 큰 소수를 찾아 내기란 쉽지 않다. 이때 큰 두 소수를 p와 q라고 한다. 그리고 이 두 p와 q의 곱을 N이라고 한다. p, q : 서로 다른 소수N = p*q N이 공개되더라도 p, q의 값을 쉽게 구할 수는 없다. 이제 정수 e를 선택해야 하는데, 이 값은 (p-1) * (q - 1) 인 값과 공통인수가 없는 3 ~ (N-1) 범위에 .. 더보기
iOS에서 RSA암호화(2) 이전글 : 2017/09/19 - [Mac/iOS] - iOS에서 RSA암호화(1) iOS에서 RSA암호화 하는 방법을 찾아본 결과 1. RSA 암호화를 지원하는 라이브러리를 사용한다.2. 직접 RSA를 구현한다. 이와 같이 결론을 내렸다. 2번 방법을 하기엔 시간이 부족하고, 1번 방법을 찾아본 결과 OpenSSL 에 RSA알고리즘이 있는 것을 확인 했다. 이때 Cheon Brave 님 블로그가 가장 도움이 많이 되었다. Cheon Brave 님 블로그 : IOS - RSA 공개키 암호화 (Modulus, Exponent 사용) - 64bit 정책 대응방법 포함 동일한 내용이지만 다시한번 언급하면, 1. OpenSSL 정적 라이브러리를 만든다(출처 : https://github.com/x2on/Open.. 더보기
iOS에서 RSA암호화(1) 1. 개요 현재 환경 서버 - Java모바일 Android - Java모바일 iOS - Objective-C 위의 환경에서 모바일에서 생성한 데이터를 서버로 암호화 해서 전달해야 했다. 암호화 방법은 RSA를 사용하기로 했고 공개키와 개인키는 서버에서 만든걸 사용하기로 했다. 서버에서 모바일로 공개키를 받아와서 처리할 수도 있지만, 회의결과 처음부터 공개키 정보를 가지고 있기로 했다. 사용할 공개키는 다음과 같다.(설명을 위해 http://travistidwell.com/jsencrypt/demo/ 에서 공개키를 하나 생성 후 Hex String으로 변환) 30820121300d06092a864886f70d01010105000382010e00308201090282010079794aae2052a6842a8.. 더보기
정규식으로 텍스트필드에 영문, 한글, 숫자, 특수문자만 입력 받기(3) 한글 입력이 문제다. 의도는 NSTextfield + NSFormatter + NSRegularExpression 조합으로 끝내는 것인데, 조합형 입력일 경우 글자 완성이 안되면 isPartialStringValid 에 들어오지를 않는다. 한글 자음(또는 모음) 한글자 입력 후 마우스 다른 곳에 클릭하면 Crash가 발생한다. 방법을 찾다찾다 안되서 어쩔 수 없이 isPartialStringValid 에 자음이나 모음 입력은 허용을 시켰다. 그리고 NSTextfield 자체를 상속 받아서 keyUp: 과 textDidEndEditing: 이벤트에서 처리하도록 했다. keyUp: 이벤트일 때 : 이전에 입력했던 값을 불러온다. 현재랑 이전 모두 허용하지 않은 문자(한글 자음이나 모음)이 있을 경우 해당 자.. 더보기
정규식으로 텍스트필드에 영문, 한글, 숫자, 특수문자만 입력 받기(2) 이전 포스팅 : 정규식으로 텍스트필드에 영문, 한글, 숫자, 특수문자만 입력 받기(1) 이제 값을 체크할 차례이다. 텍스트필드의 입력된 값을 가리키는 포인터는 partialStringPtr이다. 여기 값을 체크해서 return NO를 해주면 텍스트필드에 값이 입력되지 않는다. 간단하게 [*partialStringPtr length] > 10 인지 체크해서 return NO만 해주어도 글자가 10자 까지만 입력되게 할 수 있다. 좀더 복잡한 처리를 위해 정규식을 사용할 예정이다. Objective C에서는 정규식을 사용할때 NSRegularExpression 를 사용하면 된다. 영문이나 숫자만 최대 100자만 입력가능하게 하려면 다음과 같이 하면 된다. // 영문, 숫자 10자 NSString *expre.. 더보기
정규식으로 텍스트필드에 영문, 한글, 숫자, 특수문자만 입력 받기(1) NSTextfield에 NSFormatter를 이용해서 정해진 값만 받도록 해보자. 우선 NSFormatter를 상속받아서 CustomFormatter 클래스를 만든다. @interface CustomFormatter : NSFormatter@end 이제 CustomFormatter에서 다음 메시지들을 구현한다. - (NSString *)stringForObjectValue:(id)obj; - (BOOL)getObjectValue:(id *)obj forString:(NSString *)string errorDescription:(SString **)error; - (BOOL)isPartialStringValid:(NSString **)partialStringPtr proposedSelectedRange.. 더보기
XCode Build Clean XCode의 Menu > Project > Clean 동작을 크게 의심없이 썼었다. 구글링하다가 Clean을 해도 남아있는 찌꺼기가 있다는 사실을 알게 되었다. 위치는 ~/Library/Developer/Xcode/DerivedData/ 이다. 지금까지 몇년동안 했던 프로젝트가 고스란히 모여있었다.-_- 말끔하게 지워주자. rm -rf ~/Library/Developer/Xcode/DerivedData/* 더보기
NSButton setFrame Not working 인터페이스 빌드에서 추가한 control들을 나중에 동적으로 위치나 사이즈 변경을 하려고 할때 변경이 안되는 경우가 있다. 원인은 Auto Layout 설정 때문이다. xib파일을 열고 Auto Layout 설정을 확인 한다. 아래에 Use Auto Layout이 설정되어 있을 것이다. 이것의 체크를 해제한다. 이제 정상적으로 동작할 것이다. 더보기