时间:2023-02-27来源:系统屋作者: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
2023-02-25
如何在Linux下安装Node.js的Express2023-02-24
Ubuntu系统修改Locale时出现错误怎么解决?2023-02-23
Linux系统常用磁盘阵列介绍JDK8是Java的一个产品,如果你还记得以前手机软件安装包的格式很多都是JDK格式,那么说明你已经老了。不说这些了,总之是JDK8是Linux系统中应用很广泛的工具,本文就来介绍一下CentOS系统安装JDK8的步骤。...
2023-02-23
有人说没有终端的Linux不是一个完整的Linux,这句话也是有一定道理的。因为终端的命令行能够很大的丰富Linux的功能。Guake 终端就是比较常用的终端。本文就来介绍一下如何给Ubuntu系统安装Guake终端。...
2023-02-23