rc4(3) OpenSSL rc4(3) NNAAMMEE RC4_set_key, RC4 - RC4 encryption SSYYNNOOPPSSIISS #include void RC4_set_key(RC4_KEY *key, int len, const unsigned char *data); void RC4(RC4_KEY *key, unsigned long len, const unsigned char *indata, unsigned char *outdata); DDEESSCCRRIIPPTTIIOONN This library implements the Alleged RC4 cipher, which is described for example in _A_p_p_l_i_e_d _C_r_y_p_t_o_g_r_a_p_h_y. It is believed to be compatible with RC4[TM], a proprietary cipher of RSA Security Inc. RC4 is a stream cipher with variable key length. Typically, 128 bit (16 byte) keys are used for strong encryption, but shorter insecure key sizes have been widely used due to export restrictions. RC4 consists of a key setup phase and the actual encryption or decryp- tion phase. _R_C_4___s_e_t___k_e_y_(_) sets up the RRCC44__KKEEYY kkeeyy using the lleenn bytes long key at ddaattaa. _R_C_4_(_) encrypts or decrypts the lleenn bytes of data at iinnddaattaa using kkeeyy and places the result at oouuttddaattaa. Repeated _R_C_4_(_) calls with the same kkeeyy yield a continuous key stream. Since RC4 is a stream cipher (the input is XORed with a pseudo-random key stream to produce the output), decryption uses the same function calls as encryption. Applications should use the higher level functions _E_V_P___E_n_c_r_y_p_t_I_n_i_t(3) etc. instead of calling the RC4 functions directly. RREETTUURRNN VVAALLUUEESS _R_C_4___s_e_t___k_e_y_(_) and _R_C_4_(_) do not return values. NNOOTTEE Certain conditions have to be observed to securely use stream ciphers. It is not permissible to perform multiple encryptions using the same key stream. SSEEEE AALLSSOO _b_l_o_w_f_i_s_h(3), _d_e_s(3), _r_c_2(3) HHIISSTTOORRYY _R_C_4___s_e_t___k_e_y_(_) and _R_C_4_(_) are available in all versions of SSLeay and OpenSSL. 1.0.2u 2019-12-20 rc4(3)