일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- rust
- Tendermint
- Config server
- rust 강좌
- 기본문법
- did
- MSSQL
- MSA
- 분산 식별자
- 구피
- 텐더민트
- 애플 달팽이
- 분산 신원
- 주말농장
- 물생활
- 쌈채소
- 치비
- 카디날
- 가재
- 반복문
- Python 강좌
- PKI
- for
- Feign
- 무화과
- 체리새우
- golang 강좌
- rust 소개
- RSA
- 조건문
- Today
- Total
목록rust (12)
comnic's Dev&Life
기본적인 PKI(Public Key Infrastructure) 구현 Rust에서 PKI(Public Key Infrastructure)를 구현하기 위해 가장 많이 사용되는 암호화 알고리즘 중 하나는 RSA(Rivest–Shamir–Adleman)입니다. RSA는 대표적인 공개키 알고리즘으로, 안전한 키 교환과 전자 서명을 위해 사용됩니다. Rust를 공부하는 입장으로 먼저 RSA를 직접 구현해 보고, 이후 rsa 라이브러리를 사용해서 구현해 보겠습니다. 1. 키 생성 RSA는 공개키와 비밀키로 이루어져 있습니다. 키는 두 개의 소수인 p와 q를 생성하고, n = pq로 계산됩니다. 그리고 양의 정수 e와 d를 선택하여 다음의 조건을 만족하는 공개키 (e, n)과 비밀키 (d, n)를 생성합니다. e와 ..
RSA로 서명하고 검증하기 RSA를 사용하여 기본적인 PKI(Public Key Infrastructure)를 구현해 보겠습니다. 이 예제에서는 다음의 단계를 따라갑니다. 키 생성: RSA 알고리즘을 사용하여 공개키와 개인키를 생성합니다. 서명: 개인키를 사용하여 메시지에 서명을 생성합니다. 검증: 공개키를 사용하여 서명이 유효한지 검증합니다. 먼저, rsa 라이브러리를 사용하여 RSA 알고리즘을 구현합니다. 이 라이브러리는 RSA 키 생성, 서명, 검증 등을 편리하게 다룰 수 있도록 도와줍니다. 먼저 [rsa, num-bigint]를 dependencies에 추가합니다. # Cargo.toml에 의존성 추가 [dependencies] rsa = "0.3.0" num-bigint = "0.4.0" 혹은 ..
9. 생성자와 소멸자, RAII(Resource Acquisition Is Initialization) 개념 9.1 생성자와 소멸자 메소드 정의 생성자(new 메소드): Rust에서는 impl 블록 내에서 new라는 이름을 가진 함수를 통해 생성자 역할을 수행합니다. 이 함수는 보통 새로운 객체를 생성하고 초기화하는 데 사용됩니다. struct MyResource { data: String, } impl MyResource { fn new(initial_data: &str) -> MyResource { println!("리소스 생성"); MyResource { data: String::from(initial_data), } } } MyResource 구조체에는 data라는 필드가 있습니다. impl 블록..
6. 구조체와 열거형 6.1 구조체(Struct)와 멤버 구조체(Struct)는 서로 다른 데이터 타입을 포함하는 사용자 정의 데이터 타입입니다. 구조체를 사용하여 여러 변수를 묶어서 하나의 논리적 단위로 표현할 수 있습니다. 각 변수는 멤버(member)라고 불리며, 멤버는 서로 다른 데이터 타입일 수 있습니다. // 구조체 정의 struct Point { var x: Int var y: Int } // 구조체 인스턴스 생성 var myPoint = Point(x: 10, y: 20) // 멤버에 접근 print("X 좌표: \(myPoint.x), Y 좌표: \(myPoint.y)") 위의 예제에서 Point는 x와 y라는 두 개의 멤버를 가진 구조체입니다. 구조체를 사용하여 myPoint 변수를 만..
Rust 프로그램을 Visual Studio Code에서 디버깅하는 방법에 대해 알아보겠습니다. 1. CodeLLDB 확장 프로그램 설치 먼저 VS Code의 extension을 설치해 줍니다. [CodeLLDB]를 검색해서 아래와 같이 설치해 줍니다. 2. 기본 소스 생성 설치가 완료되면 아래와 같이 간단한 소스 코드를 생성합니다. fn main() { let var1: u32 = 100; println!("Hello, world!"); println!("var1: {}", var1); } VS Code에서 왼쪽 라인 넘버 옆에 마우스를 가져가시면 브레이크 포인트(중단점)를 찍을 수 있습니다. 클릭하셔서 원하시는 위치에 찍어줍니다. 이렇게 준비가 되면, 이제 디버깅을 위한 설정을 해야 합니다. 3. l..
열거형(enumeration) Option과 Result 1. 열거형(enumeration) 열거형(Enumeration 또는 Enum)은 여러 값을 하나의 타입으로 묶어서 표현하는 Rust의 기능 중 하나입니다. 열거형은 다양한 형태의 데이터를 하나의 타입으로 표현할 수 있도록 도와주며, 패턴 매칭이나 다른 커스텀 타입 정의에 사용됩니다. 열거형의 기본 구조 열거형은 enum 키워드를 사용하여 정의됩니다. 가장 간단한 형태의 열거형은 다음과 같습니다: enum Direction { North, East, South, West, } 위의 예제에서 Direction은 North, East, South, West라는 네 개의 변형을 갖는 열거형입니다. 열거형의 값 사용하기 열거형 값은 해당 열거형의 이름과 ..
4. 제어 흐름 3.1 조건문 (if, else if, else) if문은 조건에 따라 코드 블록을 실행합니다. Rust에서는 if, else if, else를 사용하여 다양한 조건을 처리할 수 있습니다. let number = 42; if number > 0 { println!("양수입니다."); } else if number < 0 { println!("음수입니다."); } else { println!("0입니다."); } 3.2 반복문 (loop, while, for) 반복문은 코드 블록을 여러 번 실행하는 데 사용됩니다. Rust에는 loop, while, for 반복문이 있습니다. 3.2.1 loop loop는 무한 루프를 생성합니다. break 키워드를 사용하여 루프를 종료할 수 있습니다. l..
3. 기본 문법과 데이터 타입 3.1 변수와 상수 Rust에서 변수는 let 키워드를 사용하여 선언하며, 기본적으로 불변(immutable)입니다. 값을 변경하려면 mut 키워드를 사용하여 가변(mutable)으로 선언해야 합니다. // 불변 변수 let x = 5; // 가변 변수 let mut y = 10; y = y + 1; 상수는 const 키워드를 사용하여 선언하며, 타입 명시가 필요합니다. const MAX_POINTS: u32 = 100_000; 2.2 데이터 타입 Rust는 정적 타입 언어로, 변수나 표현식의 타입은 컴파일 시점에 결정됩니다. 기본 데이터 타입은 다음과 같습니다. 정수형(Integers): let a: i32 = 42; // 32-bit 부호 있는 정수 let b: u64 ..