<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      Linux為OpenSSL添加自定義加密算法的技巧

      [摘要]Linux系統OpenSSL是一套密碼庫系統,所以Linux系統使用OpenSSL的過程中,就一定會涉及給OpenSSL添加加密算法,本文就來介紹一下Linux為OpenSSL添加自定義加密算法的技...

        Linux系統OpenSSL是一套密碼庫系統,所以Linux系統使用OpenSSL的過程中,就一定會涉及給OpenSSL添加加密算法,本文就來介紹一下Linux為OpenSSL添加自定義加密算法的技巧。

        一、簡介

        本文以添加自定義算法EVP_ssf33為例,介紹在OpenSSL中添加自定義加密算法的方法

        二、步驟

        1、修改crypto/object/objects.txt,注冊算法OID,如下:

        rsadsi 3 255: SSF33: ssf33

        2、進入目錄:crypto/object/,執行如下命令,生成算法的聲明

        perl objects.pl objects.txt obj_mac.num obj_mac.h

        3、在crypto/evp/下添加e_ssf33.c,內容如下

        #include 《stdio.h》

        #include “cryptlib.h”

        #ifndef OPENSSL_NO_RC4

        #include 《openssl/evp.h》

        #include 《openssl/objects.h》

        #include 《openssl/rc4.h》

        /* FIXME: surely this is available elsewhere? */

        #define EVP_SSF33_KEY_SIZE 16

        typedef struct

        {

        RC4_KEY ks; /* working key */

        } EVP_SSF33_KEY;

        #define data(ctx) ((EVP_SSF33_KEY *)(ctx)-》cipher_data)

        static int ssf33_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, const unsigned char *iv,int enc);

        static int ssf33_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, unsigned int inl);

        static const EVP_CIPHER ssf33_evp_cipher=

        {

        NID_ssf33,

        1,

        EVP_SSF33_KEY_SIZE,

        0,

        EVP_CIPH_VARIABLE_LENGTH,

        ssf33_init_key,

        ssf33_cipher,

        NULL,

        sizeof(EVP_SSF33_KEY),

        NULL,

        NULL,

        NULL,

        NULL

        };

        const EVP_CIPHER *EVP_ssf33(void)

        {

        return(&ssf33_evp_cipher);

        }

        static int ssf33_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, const unsigned char *iv, int enc)

        {

        RC4_set_key(&data(ctx)-》ks,EVP_CIPHER_CTX_key_length(ctx), key);

        return 1;

        }

        static int ssf33_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, unsigned int inl)

        {

        RC4(&data(ctx)-》ks,inl,in,out);

        return 1;

        }

        #endif

      Linux是一套免費使用和自由傳播的類Unix操作系統




      日韩精品一区二区三区高清