one-time-password alternatives and similar packages
Based on the "Cryptography" category.
Alternatively, view one-time-password alternatives based on common mentions on social networks and blogs.
-
cryptonite
lowlevel set of cryptographic primitives for haskell -
merkle-tree
An implementation of a Merkle Tree and merkle tree proofs -
saltine
Cryptography that's easy to digest (NaCl/libsodium bindings) -
pedersen-commitment
An implementation of Pedersen commitment schemes -
arithmetic-circuits
Arithmetic circuits for zero knowledge proof systems -
galois-field
Finite field and algebraic extension field arithmetic -
cryptohash
efficient and practical cryptohashing in haskell. DEPRECATED in favor of cryptonite -
elliptic-curve
A polymorphic interface for elliptic curve operations -
oblivious-transfer
Oblivious transfer for multiparty computation -
ed25519
Minimal ed25519 Haskell package, binding to the ref10 SUPERCOP implementation. -
signable
Deterministic serialisation and signatures with proto-lens and protobuf-elixir support -
cipher-blowfish
DEPRECATED by cryptonite; A collection of cryptographic block and stream ciphers in haskell -
cipher-aes
DEPRECATED - use cryptonite - a comprehensive fast AES implementation for haskell that supports aesni and advanced cryptographic modes. -
crypto-api
Haskell generic interface (type classes) for cryptographic algorithms -
skein
Skein, a family of cryptographic hash functions. Includes Skein-MAC as well. -
qnap-decrypt
Decrypt files encrypted by the QNAP's Hybrid Backup Sync -
galois-fft
Finite field polynomial arithmetic based on fast Fourier transforms -
cryptohash-sha256
Fast, pure and practical SHA-256 implementation -
cryptohash-md5
Fast, pure and practical MD5 implementation -
crypto-pubkey-types
Crypto Public Key algorithm generic types. -
crypto-pubkey-openssh
OpenSSH keys decoder/encoder -
crypto-pubkey
DEPRECATED - use cryptonite - Cryptographic public key related algorithms in haskell (RSA,DSA,DH,ElGamal) -
scrypt
Haskell bindings to Colin Percival's scrypt implementation. -
cipher-aes128
Based on cipher-aes, but using a crypto-api interface and providing resulting IVs for each mode -
cprng-aes
Crypto Pseudo Random Number Generator using AES in counter mode -
crypto-numbers
DEPRECATED - use cryptonite - Cryptographic number related function and algorithms
InfluxDB - Power Real-Time Data Analytics at Scale
* 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 one-time-password or a related project?
README
What
One time password implementation according to RFC4226 and RFC6238 in Haskell.
Generation passwords
If you need to generate HOTP password described in RFC4226, then use
>>> hotp SHA1 "1234" 100 6
317569
>>> hotp SHA512 "1234" 100 6
134131
Or
>>> totp SHA1 "1234" (read "2010-10-10 00:01:00 UTC") 30 8
43388892
to generate TOTP password described in RFC6238.
Checking passwords
hotpCheck :: (HashAlgorithm a)
=> a -- ^ Hashing algorithm
-> ByteString -- ^ Shared secret
-> (Word64, Word64) -- ^ how much counters to take lower and higher than ideal
-> Word64 -- ^ ideal (expected) counter value
-> Word -- ^ Number of digits in password
-> Word32 -- ^ Password entered by user
-> Bool -- ^ True if password acceptable
>>> hotpCheck SHA1 "1234" (0,0) 10 6 50897
True
>>> hotpCheck SHA1 "1234" (0,0) 9 6 50897
False
>>> hotpCheck SHA1 "1234" (0,1) 9 6 50897
True
Here almost the same aguments as for hotp
function, but there is
also (0, 0)
tuple. This tuple describes range of counters to check
in case of desynchronisation of counters between client and
server. I.e. if you specify (1, 1)
and ideal counter will be 10
then function will check passwords for [9, 10, 11]
list of
counters.
There is also some protection, so if you specify (minBound,
maxBound)
then function will check just 1000 counters around ideal.
Here is the same for TOTP:
>>> totpCheck SHA1 "1234" (0, 0) (read "2010-10-10 00:00:00 UTC") 30 6 778374
True
>>> totpCheck SHA1 "1234" (0, 0) (read "2010-10-10 00:00:30 UTC") 30 6 778374
False
>>> totpCheck SHA1 "1234" (1, 0) (read "2010-10-10 00:00:30 UTC") 30 6 778374
True