ubuntu上安装测试openssl
来源:互联网 发布:电动车合格证打印软件 编辑:程序博客网 时间:2024/05/22 07:45
环境 UBUNTU64位
一、首先确保系统内有如下软件已安装
1、perl5
参考http://blog.sina.com.cn/s/blog_68158ebf0100ndes.html
2、GCC
3、MAKE
一般情况下Ubuntu完全安装的情况下上述软件都是默认安装的。
二、下载OPENSSL源码
下载链接如下:www.openssl.org/source/
在上述网址内下载release版本的源码,如果没有找到你想要的版本那么可以去http://www.openssl.org/source/old/ 下载你想要的版本,我下载的是openssl-1.0.1j版本。
三、解压配置编译测试运行
新建一个openssl目录,解压源码到openssl目录下,分别执行如下指令
// 前提是下载的openssl源码在当前的工作目录下mkdir openssltar vxfz openssl-1.0.1j.tar.gz -C ./openssl./config// 编译,会在openssl源码的根目录内生产libcrypto.a和libssl.a两个静态库文件make// 测试make test// 安装会将头文件自动安装在/usr/include/openssl内make install
四、编一个基于AES CTR128模式的测试程序,代码如下:
新建一个crypt.c,将openssl刚编译生产的静态库拷贝到crypt.c相同的目录内
#include "stdio.h"#include "stdlib.h"#include "string.h"#include "math.h"#include "openssl/aes.h"struct ctr_state {/* ivec[0..7] is the IV, ivec[8..15] is the big-endian counter */unsigned char ivec[16]; unsigned int num;unsigned char ecount[16];};int init_ctr(struct ctr_state *state, unsigned char iv[16],unsigned int num,unsigned char ecount[16]){#if 0/* aes_ctr128_encrypt requires 'num' and 'ecount' set to zero on the* first call. */state->num = 0;memset(state->ecount, 0, 16);/* Initialise counter in 'ivec' to 0 */memset(state->ivec + 8, 0, 8);/* Copy IV into 'ivec' */memcpy(state->ivec, iv, 8);#elsestate->num = num;memcpy(state->ivec,iv,16);memcpy(state->ecount,ecount,16);#endifreturn(0);}/*=======================================================================================================Function : aesif_ctr128_encrypt() CTR128 encrypt & decryptINPUT : p_plaintext the plain text pointer plenthe plain text length p_keythe key pointer klenthe key length p_ivthe iv pointer ilenthe iv length p_ecountthe ecount pointer elenthe ecount length numthe ctr numberOUTPUT : ctr encrypt status 0:success -1:input data length error=======================================================================================================*/int aesif_ctr128_encrypt(unsigned char *p_plaintext,unsigned int plen,unsigned char *p_key,unsigned char klen,unsigned char *p_iv,unsigned char ilen,unsigned char *p_ecount,unsigned int elen,unsigned int num,unsigned char *p_ciphertext){AES_KEY rkey;unsigned char key[32],iv[8];struct ctr_state state; memset(key,0,32);memset(iv,0,8);if(klen > 32)klen = 32;memcpy(key,p_key,klen);if(ilen > 16)ilen = 16;memcpy(iv,p_iv,ilen);init_ctr(&state, iv,num,p_ecount);AES_set_encrypt_key(key, 256, &rkey);AES_ctr128_encrypt(p_plaintext, p_ciphertext, plen, &rkey, state.ivec, state.ecount, &state.num);return 0;}void aes_ctr128_test(void){int i = 0;unsigned char plaintext[AES_BLOCK_SIZE * 2]; unsigned char ciphertext[AES_BLOCK_SIZE * 2]; unsigned char checktext[AES_BLOCK_SIZE * 2]; unsigned char saveiv[16] = {0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7};unsigned char iv[16];unsigned int num = 0;unsigned char ecount[16] = {0};memcpy(plaintext,"aes ctr128 function test iarlink",32); printf("\nplaintext:\"aes ctr128 function test iarlink\"\n\n");printf("plaintext in hex: ");for(i = 0;i < 32;i++)printf("%02X ",plaintext[i]);printf("\n\n");/* encrypt */memcpy(iv,saveiv,16);aesif_ctr128_encrypt(plaintext,sizeof(plaintext),"iarlink",sizeof("iarlink"),iv,sizeof(iv),ecount,sizeof(ecount),num,ciphertext);printf("ciphertext in hex: ");for(i = 0;i < 32;i++)printf("%02X ",ciphertext[i]);printf("\n\n");/* decrypt */memcpy(iv,saveiv,16);aesif_ctr128_encrypt(ciphertext,sizeof(ciphertext),"iarlink",sizeof("iarlink"),iv,sizeof(iv),ecount,sizeof(ecount),num,checktext);printf("checktext in hex: ");for(i = 0;i < 32;i++)printf("%02X ",checktext[i]);printf("\n\n");printf("end!\n");}int main(){aes_ctr128_test();}
运行如下命令编译
gcc crypto.c -L./ -lcrypto -lssl -o crypt
运行
./crypt
结果如下:
0 0
- ubuntu上安装测试openssl
- ubuntu下安装openssl
- Ubuntu 安装openssl环境
- Ubuntu安装openssl
- Ubuntu安装OpenSSL
- Cygwin上安装openssl
- ubuntu 上安装opencv以及测试
- xenomai 在ubuntu上的安装测试
- ubuntu 14.04下安装openssl
- 在Ubuntu中安装openssl
- ubuntu下安装openssl库
- ubuntu下如何安装openssl
- ubuntu 14.04下安装openssl
- 在Ubuntu中安装openssl
- Ubuntu上安装gem包时报`require': cannot load such file -- openssl (LoadError)
- Ubuntu上安装gem包时报`require': cannot load such file -- openssl (LoadError)
- 在ubuntu 9.10 上安装配置测试codeblock
- Ubuntu 上安装jenkins 自动测试ruby on rails
- 3中计算文件补集方式
- storm-kafka spout获取数据的异常解决办法
- linux bash快捷键
- Parcelable encountered IOException writing serializable object问题解决
- python中yield与with的配合
- ubuntu上安装测试openssl
- 安卓xml String 中百分号的使用方法
- JCS学习
- 百度搜索5大技巧
- 谷歌是如何做代码审查的
- Spring3.1, Hibernate4与Jackson2处理Json序列化异常
- 改变档案权限
- PSL框架专题(1):谜题求解专用框架
- "" 与 null 的区别