stegouuid alternatives and similar packages
Based on the "Cryptography" category.
Alternatively, view stegouuid alternatives based on common mentions on social networks and blogs.

merkletree
An implementation of a Merkle Tree and merkle tree proofs 
arithmeticcircuits
Arithmetic circuits for zero knowledge proof systems 
pedersencommitment
An implementation of Pedersen commitment schemes 
galoisfield
Finite field and algebraic extension field arithmetic 
cryptohash
efficient and practical cryptohashing in haskell. DEPRECATED in favor of cryptonite 
ellipticcurve
A polymorphic interface for elliptic curve operations 
oblivioustransfer
Oblivious transfer for multiparty computation 
ed25519
Minimal ed25519 Haskell package, binding to the ref10 SUPERCOP implementation. 
signable
Deterministic serialisation and signatures with protolens and protobufelixir support 
cipherblowfish
DEPRECATED by cryptonite; A collection of cryptographic block and stream ciphers in haskell 
cryptoapi
Haskell generic interface (type classes) for cryptographic algorithms 
cipheraes
DEPRECATED  use cryptonite  a comprehensive fast AES implementation for haskell that supports aesni and advanced cryptographic modes. 
skein
Skein, a family of cryptographic hash functions. Includes SkeinMAC as well. 
qnapdecrypt
Decrypt files encrypted by the QNAP's Hybrid Backup Sync 
galoisfft
Finite field polynomial arithmetic based on fast Fourier transforms 
cryptohashsha256
Fast, pure and practical SHA256 implementation 
cryptopubkeytypes
Crypto Public Key algorithm generic types. 
cryptopubkey
DEPRECATED  use cryptonite  Cryptographic public key related algorithms in haskell (RSA,DSA,DH,ElGamal) 
cipheraes128
Based on cipheraes, but using a cryptoapi interface and providing resulting IVs for each mode 
cprngaes
Crypto Pseudo Random Number Generator using AES in counter mode 
cryptonumbers
DEPRECATED  use cryptonite  Cryptographic number related function and algorithms
WorkOS  The modern identity platform for B2B SaaS
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of stegouuid or a related project?
README
stegouuid
A generator and verifier for steganographic numbers that look random
The standard use of this package is to generate a 64bit number and use this, along with a secret key, as input to the marking function.
Example:
secretHi = KeyHi64 12345  secret key hi 64 bits
secretLo = KeyLo64 67890  secret key low 64 bits
main :: IO ()
main = do
putStrLn "Is this marked?"
r < randomIO :: IO Word64  get 64bit random number
let x = mark secretHi secretLo r  produce marked 128bit UUID
print x
print (isMarked secretHi secretLo x)  True
Security considerations
This is a poor man's MAC. We use SHA256 to generate the second half of the UUID from the 64bit random looking input and the secret key. The small number of bits limits the security.
We will start getting collisions on the 64bit random number after about 2^{32} numbers are used. But this just means we will be providing the function with the same input, so the same output will be produced.
False Negatives
This is zero. If you produced the number with the mark
function, this number will always be
detected with isMarked
as long as you provide the correct key.
False positives
This is false detection. We worry about a UUID that was not generated using mark
but is
detected as marked by isMarked
. (A malicious adversary can always replay any UUIDs known as
marked. Thus, we will consider only new UUIDs.)
Assuming SHA256 is a perfect pseudorandom function, its truncated output, i.e. the last 64 bits of the UUID, does not leak any information about the secret key. Given a fixed secret key, for any 64bit input (corresponding to the the first half of the UUID), there is a unique 64bit output (corresponding to the second half of the UUID). There is only one such output per 64bit input. So, the probability of finding such input from a random draw is 2^{64}. The adversary would have more than a 1/2 chance of finding it after 2^{63} guesses.
Information leakage
The adversary can only know a UUID is marked if it is able to differentiate the output of truncated SHA256 from a pseudorandom function. I am unaware of any significant results in doing so. The key is 128bits in length, so going through all possible values is currently unfeasible.