Attention!
V-crypto has no connection to the official V community and is not maintained by it.
β It is not recommended to use the algorithms implemented here productively until the status is implemented. As a non-cryptographer, I cannot fully validate the security.
Contributions welcome!
- a detailed overview of important cryptographic algorithms, protocols and formats,
- the current implementation status of the official V community.
- less known but relevant as well as self-developed official algorithms that might be published here.
algorithm | category, info | importance | status |
---|---|---|---|
AES | symmetric block cipher | high, daily use | implemented βοΈ [Git] |
bcrypt | hash-algorithm | high | implemented βοΈ [Git] |
blake2(b,s) | hash-algorithm | moderate | implemented βοΈ [Git] [Git] |
blake3 | hash-algorithm | moderate | implemented βοΈ [Git] |
blowfish | legacy symmetric block cipher | moderate | implemented βοΈ [Git] |
blockcipher modes β CBC, CFB, CTR, OFB | Cipher-Block-Chaining, Cipher-Feedback, Counter, Output-Feedback | high | implemented βοΈ [Git] |
(3)DES | legacy symmetric block cipher | low | implemented βοΈ [Git] |
ECDSA | signature algorithm based on elliptic curves | high, daily use | OpenSSL C Wrapper π‘ [Git] |
Ed25519 | signature algorithm based on elliptic curves | high | implemented βοΈ [Git] |
HMAC | hash-based message authentication code | high | implemented βοΈ [Git] |
MD5 | legacy hash-algorithm | high | implemented βοΈ [Git] |
PBKDF2 | key derivation function | high | implemented βοΈ [Git] |
PEM | encoding format | high | implemented βοΈ [Git] |
RAND | random number generator | high, daily use | implemented βοΈ [Git] |
RC4 | legacy stream cipher | low | implemented βοΈ [Git] |
scrypt | hash-algorithm / key derivation function | high | implemented βοΈ [Git] |
SHA1 | legacy hash-algorithm | moderate | implemented βοΈ [Git] |
SHA256 | hash-algorithm | high, daily use | implemented βοΈ [Git] |
SHA512 | hash-algorithm | high, daily use | implemented βοΈ [Git] |
SHA3 | hash-algorithm | moderate | implemented βοΈ [Git] |
ChaCha20 | symmetric stream cipher | high, daily use | experimental π‘ [Git] |
ChaCha20-Poly1305 | Authenticated encryption with associated data (AEAD) | high, daily use | experimental π‘ [Git] |
Poly1305 | message authentication code | moderate | experimental π‘ [Git] |
SM4 | block cipher | moderate | experimental π‘ [Git] |
Last Update: 28-09-2024
The V wrapper libsodium [Git] has some of these algorithms.
algorithm | category, info | importance | status |
---|---|---|---|
blockcipher modes β XTS, CCM, GCM | XEX-based tweaked-codebook mode with ciphertext stealing, Counter with CBC-MAC (AEAD), Galois/Counter (AEAD) | high | β |
Curve25519 | elliptic curve | high, daily use | thirdparty, non standard β [Git] |
DSA | legacy signature algorithm | low | (see [1]) β |
ECDH | asymmetric crypto based on elliptic curves | high, daily use | (see [1], [2]), thirdparty, non standard β [Git] |
HKDF | key derivation function | moderate | thirdparty β [Git] |
P-224/256/384/(521) | elliptic curves (NIST) | high, daily use | β |
secp256k1 | elliptic curve | moderate | thirdparty, non standard β [Git] |
RSA | asymmetric crypto | high, daily use | (see [1]), thirdparty, non standard β [Git] |
SSH | network protocol | high, daily use | (see [2]) β |
TLS | protocol for secure network communication | high, daily use | (see [2]), wrapper, thirdparty π‘ [Git] [Git] |
x509 | encoding format | high | wrapper, thirdparty π‘ [Git] |
Last Update: 28-09-2024
The V wrapper libsodium [Git] has some of these algorithms.
algorithm | category, info | importance | status |
---|---|---|---|
argon2 | hash-algorithm / key derivation function | high | β |
Ascon | lightweight AEAD | moderate | β |
blockcipher modes β ECB, EAX, IGE, OCB | Electronic-Codebook, encrypt-then-authenticate-then-translate, Infinite Garble Extension, Offset codebook mode (AEAD) | moderate | experimental (only ECB, IGE) π‘ [Git] |
brainpoolP(256,384,521)r1 | elliptic curve | high | β |
Camellia | symmetric block cipher | low | β |
CAST | symmetric block cipher | moderate | β |
Curve448 | elliptic curve | high | β |
Ed448 | signature algorithm based on elliptic curves | high | β |
Grain v1 | symmetric stream cipher | moderate | β |
HC-(128,256) | symmetric stream cipher | moderate | β |
IDEA | symmetric block cipher | low | β |
Kyber(512,1024) | key encapsulation mechanism, post-quanten crypto | low | β |
MD4 | legacy hash-algorithm | low | experimental π‘ [Git] |
RC6 | symmetric block cipher | low | β |
RIPEMD160 | legacy hash-algorithm | moderate | experimental π‘ [Git] |
(X)Salsa20 | symmetric stream cipher | high | experimental π‘ [Git] |
Serpent | symmetric block cipher | moderate | β |
TEA, XTEA | legacy block cipher | low | experimental π‘ [Git] [Git] |
Twofisch | symmetric block cipher | moderate | experimental π‘ [Git] |
yescrypt | hash-algorithm / key derivation function | high | β |
Last Update: 01-07-2024
v install https://github.com/bstnbuck/V-crypto
In general, the functionality is easy to understand based on the tests of the respective algorithm. For larger algorithms, a README file with the most important functions follows.
import v_crypto.md4
fn main(){
// short way to get MD4 hex hash
println("`test` hashed with MD4 is: "+md4.hexhash("test"))
// long way to get bytes array
mut d := md4.new()
blocksize, bytes_hash := d.checksum('test'.bytes())
println("input produces a bytes checksum $bytes_hash.hex() with block size: $blocksize")
d.reset() // with reset, a new empty checksum can be produced
_, _ := d.checksum('Hi from V_crypto. This is an example of a long long line.'.bytes())
}
Please report security related issues to: bstnbuck (at) proton (dot) me