使用 gpg 加密文件 - 通过 shell 或 php
使用 gpg 加密文件 - 通过 shell 或 php
背景:客户提供私钥,并要求我方通过php把加密后的文件传输给他们。
环境
macOS Sierra 10.12.1
php 7.0.8
0、安装gpg环境
macOS
$ brew install gpg
CentOS
$ yum install gnupg
php
安装gnupg扩展,具体方法参考我的旧文:http://www.cnblogs.com/xjnotxj/p/6125305.html
1、导入私钥,公钥随之导入
$ gpg --import /Users/xjnotxj/downloads/6e.pri

2、测试密钥正确性[可跳过]
加密文件
$ gpg --recipient 0D39xxxx --output test_file.xls.gpg --encrypt test_file.xls
0D39xxxx => 上图的#1
解密文件
$ gpg -o test_file_new.xls -d test_file.xls.gpg
3、导出公钥
$ gpg -o pubkey.txt -a --export e6e6xxxx
e6e6xxxx => 上图的#2
4、使用php加密文件
// 设置gnupg在你本机的路径
putenv('GNUPGHOME=/root/.gnupg');
try {
//获取公钥
$publicKey = file_get_contents('application/report/pubkey.txt');
//初始化gpg
$gpg = new gnupg();
//开启调试
$gpg->seterrormode(gnupg::ERROR_EXCEPTION);
//导入公钥
$info = $gpg->import($publicKey);
//获取公钥指纹
$gpg->addencryptkey($info['fingerprint']);
//获取需要加密的文件
$uploadFileContent = file_get_contents($filename);
//加密文件
$enc = $gpg->encrypt($uploadFileContent);
//保存文件到本地
$filename = 'application/report/'.'file_xls' . '.gpg';
file_put_contents($filename, $enc);
} catch (Exception $e) {
//log something
return;
}
使用 gpg 加密文件 - 通过 shell 或 php的更多相关文章
- 破解Zip加密文件常用的几种方法
前言 在互联网的浪潮中,大家也许碰到过这种情况: 从网络上下载了一个zip文件,最后却发现它是用密码保护的,或者自己用密码加密了一个很重要zip文件,但是一段时间后忘记了密码,无法打开.这个时候,我们 ...
- gpg加密和解密
linux:gpg加密和解密 1 创建密钥 2 查看私钥 3 导出公钥 4 导出私钥 5 导入秘钥 5.1 公钥 6 公钥加密 7 私钥解密 创建密钥 gpg --gen-key 你要求输入一下内容, ...
- web主题公园版权信息破解:script.js加密文件
很多人会使用web主题公园网站的免费worldpress主题,但它的主题又都被加了版权信息,故意让人找不到版权信息的修改位置. 你如果去footer.php里面删除版权信息(技术支持:web主题公园) ...
- 破解ZIP加密文件密码fcrackzip
破解ZIP加密文件密码fcrackzip ZIP是最常见的文件压缩方式.由于其压缩算法开源,主流操作系统都支持这种压缩算法.ZIP压缩方式支持密码加密.加密的时候会在文件头部保存密钥相关信息.利用这个 ...
- execl执行解释器文件以及shell命令
问题描述: execl执行解释器文件以及shell命令 问题解决: 具体源文件:
- 无需软件windows如何加密文件夹
在百部百科上看到,放在博客中以便查看. 1.首先打开记事本,当然如果你的电脑里装有类似notepad++的文本编辑软件的也可以,但是不能用word.用这类软件好处是代码高亮,看上去舒服,减少错误率. ...
- 加密文件之Java改进版
对应Python版:加密文件之Python版Java版比Python版要快得多,两个版本不在一个量级上.在加密解密1G大文件时,Java版花费的时间是秒级,而Python版花费的时间是10分钟级. i ...
- vim加密文件
一.加密文件内容 vim gt-1.sh 输入:X 注意是大写的X 输入密码 然后,保存 再次访问,需要输入密码 如果输入密码错误,内容显示为乱码 用cat或more查看文件内容,显示为乱码:用vi重 ...
- 编写高质量代码改善C#程序的157个建议——建议116:避免用非对称算法加密文件
建议116:避免用非对称算法加密文件 MD5值或者说HASH值是一种不可逆的算法.如果需要从密文还原成明文,那么就需要对称和非对称这两类可逆算法了. 对称算法示意图: 在对称算法中,首先需要发送方和接 ...
随机推荐
- *HDU2147 博弈
kiki's game Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 40000/10000 K (Java/Others)Total ...
- Unity之CharacterController 碰撞问题总结
CharacterController 不会受到scene的重力影响,自带物理碰撞检测,在脱离导航网格的应用场景下(比如飞行),是很有优势的Unity原生工具组件.如果在复杂的应用场景里,会有多种CC ...
- POJ1753 Flip Game(bfs、枚举)
链接:http://poj.org/problem?id=1753 Flip Game Description Flip game is played on a rectangular 4x4 fie ...
- java面向对象_static关键字
1. 修饰成员变量:有static修饰的为静态变量,没有static修饰的称为实例变量. 实例变量:属于对象的,一个对象有一份.在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响.存储 ...
- 用C语言编写生成小学四则运算程序
使用软件——VS 2015 使用环境——C语言 早在上周我就开始使用C#语言做,由于最后一点问题而放弃,之后用C语言开始做,很顺利,但是也碰到了一些问题,但是通过了百度文库上的一些程序的借鉴和吴阿平同 ...
- nginx 软连接
ln -s 目标地址 源地址 ln -s ../../../web-admin/etc/nginx-location.conf web-admin.conf
- 使用JDBC的批处理功能
package cn.itcast.jdbc; import java.sql.Connection; import java.sql.Date; import java.sql.PreparedSt ...
- SQL Server 2016中In-Memory OLTP继CTP3之后的新改进
SQL Server 2016中In-Memory OLTP继CTP3之后的新改进 转译自:https://blogs.msdn.microsoft.com/sqlserverstorageengin ...
- CSharpGL(6)在OpenGL中绘制UI元素
CSharpGL(6)在OpenGL中绘制UI元素 2016-08-13 由于CSharpGL一直在更新,现在这个教程已经不适用最新的代码了.CSharpGL源码中包含10多个独立的Demo,更适合入 ...
- 《Entity Framework 6 Recipes》中文翻译系列 (46) ------ 第八章 POCO之领域对象测试和仓储测试
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 8-8 测试领域对象 问题 你想为领域对象创建单元测试. 这主要用于,测试特定的数 ...