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;
}
【Linux为OpenSSL添加自定义加密算法的技巧】 #endif上一页12下一页 剩下全文
推荐阅读
- 如何在Linux下安装Node.js的Express
- 太仓犬为什么要断尾
- 华为手机怎么切换5G网络模式
- 华为手机怎么查看保修期
- 我还是没玩懂卡萨 卡萨怎么玩
- 若为爱情故,朋友皆可抛的星座
- 兔子受到惊吓后会怎样
- 为与你相守,而甘愿放弃所有的星座女
- 猫抱着手咬还用腿蹬是为什么
- 秦尘前世什么修为
