#rsa #prime #gcd #invert

已删除 playrsa

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

0.4.0 2020年3月31日

#8 in #invert

MIT 许可协议

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