#rsa #prime #gcd #invert

bin+lib play-rsa

Rust 中用于教学目的的 RSA 密码学实现

2 个版本

0.4.1 2021 年 11 月 12 日
0.4.0 2020 年 3 月 31 日

#1615 in 数学

MIT 许可证

24KB
454


标题:Play-RSA 副标题:Rust 中用于教学目的的 RSA 密码学实现 作者:Jens Getreu 日期:2020-03-31 语言:en-GB

Play-RSA 是 Rust 中 RSA 密码学的实现 [^1]。

Cargo Documentation License

算法实现如维基百科上所述。[^2]请参阅源代码中的具体链接和伪代码示例。

免责声明

此代码仅用于教学目的。在现实世界中不提供安全性。

安装

下载、编译和安装

> cargo install play-rsa

测试

> play-rsa

构建并执行加密/解密二进制文件

下载、解压并进入包含 Cargo.toml 文件的目录 play-rsa

> cargo run --release

使用我的笔记本,生成 1024 位密钥需要一些秒。因为所有计算都是使用 BigUint 类型执行的,密钥长度主要受执行时间限制。对于所选算法和硬件,1024 位似乎是一个良好的折衷方案。

256 位密钥长度的示例输出。

FINDING BIG PRIME NUMBERS

'96543390677764721740735128239245428995208381696823499601989570975501893576667 is prime' is a true statement!


RSA PUBLIC KEY ENCRYPTION

Plaintext:            'Coming tomorrow!'

Generating key pair...
* Private key is: d=0x0ae6893332356966ecb6eec38e11a8dc6f6ec7925f5d4f18eb3b1c6c400d39ab, n=0x1059cdcccb501e1a63126625551a7d4b28dd4077e5b850ee69a8551081d2c6f5, 
* Public key is:  e=0x03, n=0x1059cdcccb501e1a63126625551a7d4b28dd4077e5b850ee69a8551081d2c6f5, key_size=256

Ciphertext:           '0x01a93489f8f4bfb95ed88a99ff4faa9894c3f2fa26f401df6f7e40601444fdb2'

Decrypted ciphertext: 'Coming tomorrow!'

[^1]: Rust 版本 > 1.1

[^2]: 一些测试基于 jsanders/rust-rsa

依赖项

~2.5MB
~41K SLoC