# Crate ore_encoding_rs

source · [−]## Expand description

The order-revealing encryption scheme of docs.rs/ore-rs works on
plaintexts of type `u64`

. The encryption scheme allows ciphertexts to be
compared to each other in such that two ciphertexts will reveal the ordering
relationship of their plaintexts.

This is great when your plain texts are u64 but if your plaintext is not a
`u64`

then you will need to map your plaintext domain to a corresponding
`u64`

in such a way as to preserve ordering relationships of the original
plaintext.

This module defines a type `OrePlaintext<T>`

and From implementations
on f32, f64, u8, bool, u16, u32 & u64 for `OrderedInteger<u64>`

.

The mapping is technically reversible (no information is lost) but a reverse mapping function is not provided.

Caveat: NaN and -ve & +ve infinity & -0.0 will also be mapped and ordering is not well-defined with those values. Those values should be discarded before converting vectors of those values.

This post was used as a reference for building this implementation Converting floating point numbers to integers while preserving order

## Example

```
use ore_encoding_rs::OrePlaintext;
let OrePlaintext(encoded) = OrePlaintext::from(123.456f64);
```

## Structs

An `OrePlainText`

is a wrapper around an unsigned integer which represents a
plaintext value before it is encrypted with an ORE encryption scheme.

## Traits

Convenience alias for all of the traits that must be implemented by the type held by an OrePlaintext

## Functions

Generate a siphash from an arbitrary length array of bytes.