근본B — bignum(임의정밀도 정수) 라이브러리
개요
정수 ±3^24(≈±1.412e11) VM 캡을 넘는 큰수 연산 keystone(AES/RSA/ECC·실
TLS·블록체인 서명 공통 기반). 근본A(같은 날, VM opcode TRUNC_MOD 752 추가)와
짝을 이루는 과제이나, 이번 근본B는 C/VM 무접촉 — 순수 한선씨
libs/bignum.한선 신규 라이브러리 1개 파일로 완결.
무엇을 했는지
libs/bignum.한선신규 작성: 다중림(BASE=10000, 4자리/림) 배열 표현,
{부호,자릿수}) — libs/행렬.한선의 "맵=구조체" 관례 재사용.
- 생성/변환: 큰수생성(문자열) 큰수정수(n) 큰수0() 큰수문자열(bn)
- 산술: 큰수더해 큰수빼기 큰수곱해 큰수나눔(몫/나머지 맵 반환)
큰수비교 큰수음수 큰수영인가 큰수반으로
- RSA 핵심: 큰수모듈러거듭제곱(base,exp,mod) — 제곱-곱셈법
- 부가: 큰수거듭제곱(모듈러 없음) 큰수팩토리얼(n)
- 나눗셈은 자릿수당 이진탐색(0~9999) 스쿨북 롱디비전으로 구현 —
_bn곱해기/_bn비교크기만
재사용.
- Python 대조 검증 전항목 완전 일치:
//와 의도적으로 다름 — 근본A
절단나눗셈 관례와 일관성 유지), 0 처리(0나눗셈 안전값 반환)
- 성능 실측: 19자리 모듈러스 modexp 0.13s, 42자리 0.57s — 대략 림수²
- 회귀 확인:
tests/run_all.sh99/107(기준선 동일),pkg make test
- pkg 동기:
libs/↔pkg/libs/이미 동일 inode(자동 하드링크) 확인, 별도
- 학습:
crownycode-learn.sh add3건(큰수모듈러거듭제곱_bignum_RSA,
큰수나눔_이진탐색롱디비전_bignum, 큰수곱해기_스쿨북캐리즉시전파_bignum).관련 파일
/Users/ef/CrownyOS/crownyc/libs/bignum.한선(신규, 정본)/Users/ef/CrownyOS/crownyc/pkg/libs/bignum.한선(하드링크 동기 확인)/Users/ef/CrownyOS/docs/한선씨-P3보완-20260710/근본B_검증.md(상세 검증 로그)
잔여 이슈
- ECC(타원곡선) 점연산은 범위 밖 — 별도 후속 라이브러리 과제.
- 음수÷음수 등 전 부호조합 퍼징 미실시(양수 위주 + 대표 음수 1케이스만 검증).
- RSA-2048급 실측(외삽만, 실제 대형 모듈러스 타이밍 측정은 미실시 — 수백 초