morus

Crates.iomorus
lib.rsmorus
version0.1.3
sourcesrc
created_at2021-10-28 21:00:51.93762
updated_at2021-10-29 00:35:05.752661
descriptionMORUS authenticated cipher (MORUS-1280-128)
homepagehttps://github.com/jedisct1/rust-morus
repositoryhttps://github.com/jedisct1/rust-morus
max_upload_size
id473696
size24,143
Frank Denis (jedisct1)

documentation

README

MORUS for Rust

This is a Rust implementation of MORUS (MORUS-1280-128)

MORUS is a fast authenticated cipher for platforms without hardware AES acceleration.

It performs especially well on WebAssembly compared to alternatives.

Cargo flags

  • std: allow dynamic allocations

std is the default.

A benchmark can be run that way:

export RUSTFLAGS="-C target-cpu=native"
cargo bench

Benchmarks

Benchmarks take a 16384 bytes input block. Results are in bytes per second.

Rust implementations

Crates:

  • aes-gcm
  • chacha20poly1305
  • morus

Macbook Pro - 2,4 GHz Intel Core i9.

cipher speed
aes128-gcm 1.91 G/s
chacha20-poly1305 1.48 G/s
morus 3.76 G/s

WebAssembly (Wasmtime)

cipher speed
aes128-gcm 44.13 M/s
chacha20-poly1305 193.05 M/s
chacha20-poly1305 (+simd128) 196.54 M/s
morus 1.07 G/s
morus (+simd128) 1.38 G/s

WebAssembly (WAVM)

cipher speed
aes128-gcm 57.01 M/s
chacha20-poly1305 335.82 M/s
morus 1.95 G/s

Other implementations (macOS native)

cipher (implementation, runtime) speed
zig-morus (Zig) 5.89 G/s

Other implementations (WebAssembly)

cipher (implementation, runtime) speed
zig-morus (Zig, wasmtime+simd128) 1.77 G/s
zig-morus (Zig, WAVM) 3.50 G/s
Commit count: 22

cargo fmt