会用opensll.exe应用程序指令
参阅两个文档《openssl编程第32章》和《openssl应用程序指令》
rand 生成随机数
生成随机数。
用法:
openssl rand [-out file] [-rand 选项:
-out file
结果输出到file中。
-engine e
采用engine来生成随机数。 -rand file
指定随机数种子文件。
file(s)] [-base] num
-base
输出结果为BASE编码数据。
num
随机数长度。
示例:
(1) openssl rand –base 100
(2) openssl rand –base –out myr.dat 100
用WinHex或UltraEdit打开myr.dat
speed
speed命令用于测试库的性能。
用法:
openssl speed [-engine id] [md2] [mdc2] [md5] [hmac] [sha1] [rmd160]
[idea-cbc] [rc2-cbc] [rc5-cbc] [bf-cbc] [des-cbc] [des-ede3] [rc4]
[rsa512] [rsa1024] [rsa2048] [rsa4096] [dsa512] [dsa1024] [dsa2048]
[idea] [rc2] [des] [rsa] [blowfish]
选项:
-engine id
设置硬件引擎id。
-elapsed
测量采用实时时间,不是所用CPU时间,两者时间差异较大。
-mr
生成机器可读显示。
-multi n
并行允许n个测试。
示例:openssl speed md5
Prime
检查一个数是否为素数。示例如下:
openssl prime 79
openssl prime -hex 4F
enc
enc为对称加解密工具,还可以进行base编码转换。
用法:
openssl enc -ciphername [-in filename] [-out filename] [-pass arg] [-e ] [-d ] [-a ] [-A] [-k password ] [-kfile filename] [-K key] [-iv IV] [-p] [-P] [-bufsize number] [-nopad] [-debug]
选项:
-ciphername
对称算法名字,此命令有两种适用方式:-ciphername方式或者省略enc直接用ciphername。比如,用des3加密文件a.txt:
openssl enc -des3 -e -in a.txt -out b.txt
openssl des3 -e -in a.txt -out b.txt
-in filename
输入文件,默认为标准输入。
-out filename
输出文件,默认为标准输出。
-pass arg
输入文件如果有密码保护,指定密码来源。
-e
进行加密操作,默认操作。
-d
进行解密操作。
-a
当进行加解密时,它只对数据进行运算,有时需要进行base转换。设置此选项后,加密结果进行base编码;解密前先进行base解码。
-A
默认情况下,base编码结果在文件中是多行的。如果要将生成的结果在文件中只有一行,需设置此选项;解密时,必须采用同样的设置,否则读取数据时会出错。
-k password
指定加密口令,不设置此项时,程序会提示用户输入口令。
-kfile filename
指定口令存放的文件。
-K key
输入口令是16进制的。
-iv IV
初始化向量,为16进制。
比如:openss des-cbc -in a.txt -out b.txt -a -A -K 1111 -iv 2222
-p
打印出使用的salt、口令以及初始化向量IV。
-P
打印使用的salt、口令以及IV,不做加密和解密操作。
-bufsize number
设置I/O操作的缓冲区大小,因为一个文件可能很大,每次读取的数据是有限的。
-debug
打印调试信息。
举例:
把某二进制文件转换成base编码方式:
openssl base -in file.bin -out file.b
把某base编码文件转换成二进制文件。
openssl base -d -in file.b -out file.bin
把某文件用DES-CBC方式加密。加密过程中会提示你输入保护密码。
openssl des3 -salt -in file.txt -out file.des3
解密该文件, 密码通过-k来输入
openssl des3 -d -salt -in file.des3 -out file.txt -k mypassword
加密某文件,并且把加密结果进行base编码。用bf+cbc算法加密
openssl bf -a -salt -in file.txt -out file.bf
先用base解码某文件,再解密
openssl bf -d -salt -a -in file.bf -out file.txt
用WinHex或UltraEdit打开加密文件
学习BASE编码解码原理
参阅文档《openssl编程第12章》
编程示例参看second,学习了下面的EVP后看例子程序
学习EVP编程
参阅两个文档《openssl编程第21章》和《openssl SDK》
学习EVP的对称加解密函数和BASE加解密函数
例子First和Second
注意添加头文件路径和lib路径
将dll拷贝到你的工程下
(或者利用安装向导安装dll到SYSTEM32下)
VS2005
Tools--options—projects and solutions—VC++ Directories—include files添加头文件evp.h
Project—property—configuration—linker—input—additional dependencies 添加libeay32.lib和ssleay32.lib
VC6.0
Tools--options— Directories—include files添加头文件evp.h
Project—configuration—linker—object/lib module添加libeay32.lib和ssleay32.lib
任务:在EVP.h中找到支持的对称加密算法和摘要算法,以及各个对称算法的加密模式,并修改程序中的TYPE来实现不同加密算法不同模式的加密。