2 个版本
0.4.1 | 2021 年 11 月 12 日 |
---|---|
0.4.0 | 2020 年 3 月 31 日 |
#1615 in 数学
24KB
454 行
标题:Play-RSA 副标题:Rust 中用于教学目的的 RSA 密码学实现 作者:Jens Getreu 日期:2020-03-31 语言:en-GB
Play-RSA 是 Rust 中 RSA 密码学的实现 [^1]。
算法实现如维基百科上所述。[^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