1.什么是openssl?
openSSL 不仅仅是 SSL。它可以实现消息摘要、文件的加密和解密、数字证书、数字签名和随机数字。关于 OpenSSL 库的内容非常多,远不是一篇文章可以容纳的。
OpenSSL 不只是 API,它还是一个命令行工具。命令行工具可以完成与 API 同样的工作,而且更进一步,可以测试 SSL 服务器和客户机。
2.openssl enc 用法:
openssl enc -ciphername [-in filename] [-out filename] [-pass arg] [-e]
[-d] [-a] [-k password] [-kfile filename] [-K key] [-iv IV] [-p]
[-P] [-bufsize number] [-debug]
说明:
对称加密算法工具。它能够把数据用不同对称加密算法来加/解密。还能够把加密
/接密,还可以把结果进行base64编码。
OPTIONS
-in filename
要加密/解密的输入文件,缺省为标准输入。
-out filename
要加密/解密的输出文件,缺省为标准输出。
-pass arg
输入文件如果有密码保护,在这里输入密码。
-salt
为了和openssl0.9.5以后的版本兼容,必须set这个option.salt大概又是密码学里
的一个术语,具体是做什么的我也没弄的很明白。就我的理解,这是加密过后放在
密码最前面的一段字符串, 用途也是为了让破解更难.如果理解错了,请密码学高手
指正.
-nosalt
想和openssl0.9.5以前的版本兼容,就set这个option
-e
一个缺省会set的option, 把输入数据加密。
-d
解密输入数据。
-a
用base64编码处理数据。set了这个option表示在加密之后的数据还要用
base64编码捏一次,解密之前则先用base64编码解码。
-k password
一个过时了的项,为了和以前版本兼容。现在用-key代替了。
-kfile filename
同上,被passin代替。
-K key
以16进制表示的密码。
-iv IV
作用完全同上。
-p
打印出使用的密码。
-P
作用同上,但打印完之后马上退出。
-bufsize number
设置I/O操作的缓冲区大小
-debug
打印调试信息。
3.在PHP中使用openssl enc加密pdf文件:
//产生16byte的-k和-iv
for( $i = 0 ; $i < 8 ; $i ++ )
{
$pdfkey.= sprintf("%04X",substr($deviceid,$i,$i+1));
//1位变为4位16进制数}
$encrypy_cmd = "openssl enc -in $src2file -out $descfile -e -aes128 -salt -K $pdfkey -iv $pdfkey -nopad" ;
exec( $encrypy_cmd );
4.在PHP中使用openssl enc解密pdf文件
$encrypy_cmd1 = "openssl enc -in $descfile -out $descfile1 -d -aes128 -salt -K $pdfkey -iv $pdfkey -nopad" ;
exec( $encrypy_cmd1 );
5.在ios中使用openssl enc解密pdf文件
main()
{
system("openssl enc -in /var/www/symbian1/interface/nreader2/tmp/temp-enc1351760437.92931423.pdf -out /var/www/symbian1/interface/nreader2/tmp/temp-pdf1351760437.92931423.pdf -d -aes128 -salt -K 0000000C00EA0D80B26EDDD51A850315 -iv 0000000C00EA0D80B26EDDD51A850315 -nopad”);
附:
相关函数
表头文件
定义函数
函数说明
返回值