时间:2017-08-17 19:56:46来源:魔法系统之家下载作者:zhijie
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
2017-08-17
如何修复一个Panic的Linux内核?2017-08-17
Linux删除文件(夹)、创建文件(夹)命令是什么?2017-08-17
Linux系统如何配置双显卡?为什么Arch Linux不适合当作服务器操作系统?可能很多用户都发现了,Linux服务器操作系统一般都是Ubuntu Server、Cent OS、Fedora或者Red Hat等,为什么很少看到Arch Linux呢?因为Arch Linux在服务方面确实存在一些劣势,下面...
2017-08-17
有些用户为了使桌面更好看、更具动感性,于是就想要设置系统的3D桌面特效,不过不少人却不知道Ubuntu 3D桌面特效怎么设置?其实方法很简单,如果你不知道的话,那就赶紧来看看小编整理的Ubuntu 3D桌面特效设置方法吧!...
2017-08-17