openSSL学习笔记 加密字符串
2009-12-29 16:14
405 查看
在精通PKI网络安全证技术与编程实现一书中的例子代码有错
原书
申明加密字符 char *msg="Hello OpenSSL";
rv=EVP_EncryptUpdate(&ctx,out,&outl,msg,strlen(msg));
在vc6++ 下编译不能通过
应改为
char msg[]="Hello OpenSSLjkljllkl";
rv=EVP_EncryptUpdate(&ctx,out,&outl,(const unsigned char *)msg,strlen(msg));
输出:
原书
申明加密字符 char *msg="Hello OpenSSL";
rv=EVP_EncryptUpdate(&ctx,out,&outl,msg,strlen(msg));
在vc6++ 下编译不能通过
应改为
char msg[]="Hello OpenSSLjkljllkl";
rv=EVP_EncryptUpdate(&ctx,out,&outl,(const unsigned char *)msg,strlen(msg));
#include<stdio.h> #include<evp.h> #include<string.h> #include<windows.h> #include<x509.h> void tEVP_Encrypt() { unsigned char key[EVP_MAX_KEY_LENGTH]; unsigned char iv[EVP_MAX_KEY_LENGTH]; EVP_CIPHER_CTX ctx; unsigned char out[1024]; int outl; int outltmp; char msg[]="Hello OpenSSLjkljllkl"; int rv; int i; for(i=0;i<24;i++) { key[i]=i; } for (i=0;i<8;i++) { iv[i]=i; } EVP_CIPHER_CTX_init(&ctx); rv=EVP_EncryptInit_ex(&ctx,EVP_des_ede3_cbc(),NULL,key,iv); if(rv != 1){ printf("Err/n"); return; } rv=EVP_EncryptUpdate(&ctx,out,&outl,(const unsigned char *)msg,strlen(msg)); if (rv !=1) { printf("Err/n"); return; } rv=EVP_EncryptFinal_ex(&ctx,out+outl,&outltmp); if (rv !=1) { printf("Err/n"); return; } outl=outl+outltmp; printf("原文为:%S/n",msg); printf("密文长度: %d/n密文数据:/n",outl); for (i=0;i<outl;i++) { printf("0x%02x ",out[i]); } printf("/n"); } int main(){ OpenSSL_add_all_algorithms(); tEVP_Encrypt(); return 0; }
输出:
相关文章推荐
- 我的学习笔记1:加密、解密,以及OpenSSL创建私有CA
- openSSL学习笔记 Base64 加密解密
- Python学习笔记,5,字符串和编码问题
- 加密解密 签名验签学习笔记
- python学习笔记3(字符串)
- Python学习笔记整理(四)Python中的字符串..
- PHP 学习笔记 - - - 简单方法的使用 (字符串与数字)
- 【批处理学习笔记】第十八课:替换字符串
- Python 【字符串】 学习笔记
- Swift学习笔记(4)--字符串及基本使用
- Java学习笔记——字符串常用函数
- cocos2d-x3.1.1 step by step 学习笔记2 cocos中的字符串
- Python学习笔记5-字符串、bool、数值操作和数组字典排序
- C#学习笔记3:提示“截断字符串或二进制数据”错误解决方法
- PHP学习笔记2 - 文件、数组、字符串
- 谭子python学习笔记--字符串
- 加密与解密二版菜鸟学习笔记(2) - SEH 结构化异常处理
- ruby 字符串学习笔记3
- Python学习笔记八:字符串的操作(二)
- 字符串单模板匹配学习笔记(一)kmp算法