在 libsodium 或 OpenSSL 中没有身份验证的 ChaCha20
ChaCha20 without authentication in either libsodium or OpenSSL
我想在没有任何身份验证的情况下使用 ChaCha20。我不认为我可以在 libsodium 中做到这一点 https://download.libsodium.org/doc/secret-key_cryptography/original_chacha20-poly1305_construction.html
我查阅了 OpenSSL 的 API https://github.com/openssl/openssl/blob/master/crypto/include/internal/chacha.h
这似乎允许它无需任何身份验证。但是,没有加解密功能,只有
void ChaCha20_ctr32(unsigned char *out, const unsigned char *inp,
size_t len, const unsigned int key[8],
const unsigned int counter[4]);
我对它的作用感到困惑,它是加密还是解密?
您指向的 OpenSSL 头文件是一个内部头文件,不构成 public API 的一部分。您需要使用的是使用 EVP_chacha20() 密码的 EVP API。
有关各种功能,请参阅此手册页:
https://www.openssl.org/docs/man1.1.0/crypto/EVP_EncryptInit_ex.html
这里有一些示例代码:
https://wiki.openssl.org/index.php/EVP_Symmetric_Encryption_and_Decryption
我想在没有任何身份验证的情况下使用 ChaCha20。我不认为我可以在 libsodium 中做到这一点 https://download.libsodium.org/doc/secret-key_cryptography/original_chacha20-poly1305_construction.html
我查阅了 OpenSSL 的 API https://github.com/openssl/openssl/blob/master/crypto/include/internal/chacha.h 这似乎允许它无需任何身份验证。但是,没有加解密功能,只有
void ChaCha20_ctr32(unsigned char *out, const unsigned char *inp,
size_t len, const unsigned int key[8],
const unsigned int counter[4]);
我对它的作用感到困惑,它是加密还是解密?
您指向的 OpenSSL 头文件是一个内部头文件,不构成 public API 的一部分。您需要使用的是使用 EVP_chacha20() 密码的 EVP API。
有关各种功能,请参阅此手册页: https://www.openssl.org/docs/man1.1.0/crypto/EVP_EncryptInit_ex.html
这里有一些示例代码: https://wiki.openssl.org/index.php/EVP_Symmetric_Encryption_and_Decryption