[카테고리:] 미분류
-
[암호학] Tiny Encryption Algorithm(TEA), XTEA
암호학에서, Tiny Encryption Algorithm은 구현과 설명이 매우 쉬운 블록 암호이다. TEA는 두 개의 32비트 부호없는 정수에서 작동하며, 128bit(16 바이트)의 키를 사용한다. 이것은 Feistel 구조와 함께 64 라운드를 사용하며, 일반적으로 cycles로 명칭된 쌍에서 구현된다. 매우 간편한 키 스케쥴을 가지고 있으며, 핵심 재료를 섞는 것은 각 사이클마다 모두 동일하다. *파이스탈 구조는 다른 포스팅에서 다루도록 한다. 서로 다른…
-
[GDB] gdb에서 입력 함수에 호출 지점 찾고 싶을 때
GDB를 사용하다 보면 입력을 받는 함수인 read에서 breakpoint를 걸고 싶을 때가 있다. 이때 함수 목록에서 해당 입력을 수행하는 함수에 모두 breakpoint를 거는 것보다 더 유용한 기술을 소개하려고 한다. 명령어 catch syscall 이후 read 외에도 여러 이벤트에 브레이크 포인트를 걸 수 있는데, 해당 OS의 unistd.h 헤더파일을 참조하면 된다. 예). i686-linux-android : https://github.com/EdgeApp/android-ndk-linux/blob/master/sysroot/usr/include/i686-linux-android/asm/unistd_64.h List up ** [0] Read…
-
[Clsx] Tailwindcss에 조건 추가하기
Tailwindcss를 이용하여 상태 값에 따른 css 변화를 주기 위해서는 삼항 연산자를 주로 사용하였다. 그런데 사용할수록 코드가 너무 더러워지는 느낌이 자주 들어서 어떻게 해결할 까 생각하던 중 GPT가 clsx 패키지를 추천해 줬다. 맨 처음 리액트를 배웠을 때는 clsx라는 패키지는 없었고, classnames라는 패키지를 주로 사용했었다. 하지만 tailwindcss를 삼항연산자로 조건을 줄 때, classnames를 사용하지 않고 아래와 같이 사용했었다.…
-
[Git] Git Rebase
Git rebase는 브랜치를 병합할 때 기존의 커밋 기록을 그대로 유지하지 않고, 새로운 커밋 기록으로 재정렬하여 보다 깔끔하고 선형적인 히스토리를 만드는 방식이다. 일반적으로 기능 개발을 위해 feature 브랜치를 만들면, 그 동안 main 브랜치는 계속 업데이트되고 커밋이 쌓인다. 이때 feature 브랜치는 main보다 뒤쳐지게 되는데, rebase는 feature 브랜치의 시작점을 main의 최신 커밋으로 옮겨서 마치 feature 브랜치가 최신 시점부터…
-
NPM (Node Package Manager)