https://github.com/synodriver/libenigma
enigma machine in pure C
https://github.com/synodriver/libenigma
Last synced: 8 months ago
JSON representation
enigma machine in pure C
- Host: GitHub
- URL: https://github.com/synodriver/libenigma
- Owner: synodriver
- Created: 2024-01-09T13:25:07.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-03-27T13:50:57.000Z (about 2 years ago)
- Last Synced: 2025-04-07T23:14:25.047Z (about 1 year ago)
- Language: C
- Size: 39.1 KB
- Stars: 0
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.markdown
Awesome Lists containing this project
README
# Enigma
### C写的恩尼格玛 不怎么高效 为了模拟机械结构只能串行加密,一次1字节
### 公开函数
```c
typedef struct enigma_machine_s
{
size_t encode_count;
size_t rollers;
uint8_t *forward_maps; // rollers*256
uint8_t *reverse_maps; // rollers*256
uint8_t (*reflect_func)(void *, uint8_t);
// f(f(x))==x f(x)!=x
void *reflect_ud;
uint8_t (*replace_func)(void *, uint8_t);
// f(f(x))==x
void *replace_ud;
// 256
} enigma_machine_t;
enigma_machine_t *
enigma_machine_new(const uint8_t *maps, size_t mapsize,
uint8_t (*reflect_func)(void *, uint8_t),
void *reflect_ud,
uint8_t (*replace_func)(void *, uint8_t),
void *replace_ud);
void
enigma_machine_del(enigma_machine_t *self);
void
enigma_machine_roll(enigma_machine_t *self, size_t idx, int count);
void
enigma_machine_encode_into(enigma_machine_t *self, const uint8_t *data, size_t len, uint8_t *out);
void
enigma_machine_encode_inplace(enigma_machine_t *self, uint8_t *data, size_t len);
bool
enigma_machine_test_replace(enigma_machine_t *self);
bool
enigma_machine_test_reflect(enigma_machine_t *self);
```