0.4.0 |
|
---|
#8 in #invert
23KB
444 代码行
标题: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