전체 글 (189) 썸네일형 리스트형 대칭키 암호화 방식 개요 (ECB, CBC) 실무에서 자주 사용하는 암복호화 알고리즘이 어떤 원리로 동작하는지 정리해보았습니다. 블록 암호 모드 주어진 평문을 블록 단위로 (암호화 키) 암호화하는 기법이다. 대칭 암호화 방식은 하나의 평문을 블록 단위로 나누어서 암호화 또는 복호화를 하고 있다. 평문의 길이가 블록 암호의 블록 크기보다 커서 남는 경우에는 어떻게 할까? 예) 300비트 평문을 AES로 암호화 하는 경우 AES의 블록 크기: 128비트 블록 개수: 3개 3번째 블록에 저장되는 데이터 크기: 44비트 패딩(Padding): 블록의 남은 부분에 데이터를 채워 넣는 것을 말한다. 정리하자면, 평문을 128비트로 나누어서 남은 비트는 Padding으로 들어간다는 뜻이다. 여기서 패딩 알고리즘 기법으로 PKCS#5 등이 사용되는데 그렇게 어려.. [Flutter] 8주간의 플러터 스터디 회고 진행 기간: 2022/03/06 ~ 2022/04/24 (8주) 내용: Udemy Dart를 사용한 완전한 2021 Flutter 개발 부트캠프 스터디 기관: https://study.flearner.co/ (플러너) 올해 2월, 지인분에게 플러터 스터디를 소개받았습니다. 일과 학업을 동시에 병행하고 있던 상태라서 신청하지 않으려고 했지만 무슨 객기였는지, 앱 개발에 관심 있었기도 해서 자신의 한계를 경험해보고 싶었고, 그렇게 스터디를 신청했습니다. 덕분에 하드 한 일정의 8주간을 보냈네요. 스터디는 강의를 통해 진행되었으며, 온라인에서 스터디 멤버들과 후기와 내용을 공유하는 방식으로 진행되었습니다. 1주 차 (I Am Poor App) 플러터에 대한 소개와 간단한 UI의 App을 만들고, 빌드하고 직접.. [Flutter] Firebase DB 값 순서정렬(Timestamp, 시간 순 정렬) 강의를 보고 따라 해서 완성한 채팅어플이다. 다 잘 동작하는데 채팅의 순서가 이상하게 꼬여서 올라온다. 찾아보니 FireBase의 채팅 doc ID들은 랜덤으로 생성되는데 여기의 문자열 순서대로 정렬되어 채팅어플에 뿌려주고 있으므로 순서가 뒤죽박죽 섞이던 것이다. 메시지에 시간필드를 추가해주면 정렬할 수 있지 않을까 시도해봤다. cloud_firestore_platform 라이브러리의 Timestamp 클래스를 사용해주어 현재 시간과 함께 add 해주자. Firebase에서 확인해보면 timeStamp 속성이 잘 추가되어 있다. 그리고 stream에서 firebase DB의 값을 가져올 때 orderBy를 이용해 timeStamp 순으로 정렬하여 갖고 오면 의도한 대로 잘 정렬된다. [Flutter] 코드 리팩토링 & 소스추출에서의 Widget과 Method의 차이 개요 중복된 소스를 공통으로 만들어 사용할 때 클래스와 메소드, 어느 방식으로 리팩토링 하는 것이 더 좋을까? 기존 코드 Padding( padding: const EdgeInsets.symmetric(vertical: 16.0), child: Material( elevation: 5.0, color: Colors.lightBlueAccent, borderRadius: BorderRadius.circular(30.0), child: MaterialButton( onPressed: () { //Go to login screen. Navigator.pushNamed(context, LoginScreen.id); }, minWidth: 200.0, height: 42.0, child: const Text( '.. [인터넷보안] 6-1. 웹 보안 취약점 개요 보호되어 있는 글입니다. [JavaScript] AES256 암호화 처리 function aes256Encrypt(text){ var key = CryptoJS.enc.Utf8.parse(encryptKey); //암호화키 (32자리) 할당 var iv = CryptoJS.enc.Hex.parse(ivVal);// IV값할당 return CryptoJS.AES.encrypt(text, key, {iv:iv}).toString(); } encryptKey(비밀키) - 16바이트 (16자리)를 입력시 AES-128 출력 - 24바이트 입력 시 AES-192, 32바이트 입력 시 AES-256으로 출력한다. Iv - 배열 값은 16바이트 고정 - ivVal 파라미터에 값을 넣어준다. [Git] 잘못 올라간 소스 원복하는 방법 (Revert, Reset) 최근 서버에 잘못된 소스를 올려 원복해야하는 일이 있었는데, 원복에 익숙치 않아 헤매었었다. 인텔리제이를 기준 원복하는 법을 알아보자. 0. Build 툴의 Build History를 통해 복구해야 할 커밋 로그를 확인한다. 1. IntelliJ의 Git 커밋로그에서 원복해야할 커밋들을 드래그한다. 2. Revert Commits를 실행하면 선택한 커밋로그의 반영분이 복구된다. Reset과 Revert 차이점 Reset: 반영 내역과 커밋 로그까지 함께 되돌린다. (원복 기록이 남지 않음) Revert: 반영 내역을 되돌리며 되돌린 행위까지 기록으로 남긴다. (원복 기록이 남음) 3. Push하기 전에 복구된 커밋들을 Squash해준다. Squash: 여러 커밋 로그들을 묶어서 한 개의 커밋으로 Push.. [Flutter] 플러터 페이지 간 이동과 context의 의미 (Multi-Screen Apps Using Routes and Navigation And About context) 플러터 화면 이동 플러터에서는 Navigator을 통해 페이지간 이동을 다룰 수 있다. 페이지이동을 스택구조로 관리하여 Push와 Pop을 명령을 통해 페이지를 이동한다. 1. 이전 페이지 이동 현재 페이지를 스택에서 제거하여 이전 페이지로 이동한다. 스택에 페이지가 남아있다면 해당 페이지가 표시되고, 없다면 앱이 종료된다. Navigator.pop(context); 2. 다음 페이지 이동 현재 페이지를 스택에 남겨놓고 NextPage라는 이름을 가진 페이지로 이동한다. 이 경우 다음 페이지에서 Pop을 하면 현재 페이지로 돌아올 수 있다. Navigator.push( context, MaterialPageRoute(builder: (context) => NextPage()), ); 현재 페이지를 스택에.. 이전 1 2 3 4 5 6 7 ··· 24 다음