萬盛學電腦網

 萬盛學電腦網 >> Linux教程 >> Linux為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 上一頁12下一頁共2頁

  4、修改crypto/evp/evp.h,添加對算法的聲明,如下

  const EVP_CIPHER *EVP_ssf33(void);

  5、修改crypto/evp/c_allc.c,在OpenSSL_add_all_ciphers函數中使用EVP_add_cipher注冊加密函數,如下

  EVP_add_cipher(EVP_ssf33());

  6、修改crypto/evp/Makefile,如下

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

  以上就是Linux為OpenSSL添加自定義加密算法的技巧了,就是因為OpenSSL可以自定義加密算法,所以才讓OpenSSL更加安全可靠。

上一頁12 下一頁共2頁
copyright © 萬盛學電腦網 all rights reserved