-
linux下使用openssl命令行加密文件(转)
2017-11-04 22:00:41OS: ubuntu 12.04命令行输入openssl,进入openssl命令行状态# opensslOpenSSL>" 加密文件 -e (加密) -aes-128-cbc(加密算法)OpenSSL> enc -e -aes-128-cbc -in -out “ 输入加密密码,回车enter aes-128-cbc ...OS: ubuntu 12.04
命令行输入openssl,进入openssl命令行状态
# openssl
OpenSSL>
" 加密文件 -e (加密) -aes-128-cbc(加密算法)
OpenSSL> enc -e -aes-128-cbc -in <input file path> -out <output file path>
“ 输入加密密码,回车
enter aes-128-cbc encryption password:
” 再次输入密码,回车
Verifying - enter aes-128-cbc encryption password:
加密OK!!
" 解密文件 -d (加密) -aes-128-cbc(加密算法)
OpenSSL> enc -d -aes-128-cbc -in <input file path> -out <output file path>
“ 输入加密密码,回车
enter aes-128-cbc decryption password:
解密OK!!
-
linux下使用openssl命令行加密文件
2014-05-10 11:41:19命令行输入openssl,进入openssl命令行状态 # openssl OpenSOS: ubuntu 12.04
命令行输入openssl,进入openssl命令行状态
# openssl
OpenSSL>
" 加密文件 -e (加密) -aes-128-cbc(加密算法)
OpenSSL> enc -e -aes-128-cbc -in <input file path> -out <output file path>
“ 输入加密密码,回车
enter aes-128-cbc encryption password:
” 再次输入密码,回车
Verifying - enter aes-128-cbc encryption password:
加密OK!!
" 解密文件 -d (加密) -aes-128-cbc(加密算法)
OpenSSL> enc -d -aes-128-cbc -in <input file path> -out <output file path>
“ 输入加密密码,回车
enter aes-128-cbc decryption password:
解密OK!!
-
使用C语言,对OpenSSL命令行加密的文件进行解密
2017-06-09 21:50:41需要使用代码对OpenSSL shell命令加密的文件进行解密需要阅读本文。需要使用代码对shell命令加密的文件进行解密需要阅读本文。
OpenSSL提供shell命令,以下命令可以对文件进行加密、解密。:
> openssl enc -e -aes-128-cbc -k 123456 -p -nosalt -in inputfile.txt -out encryptfile.txt > openssl enc -d -aes-128-cbc -k 123456 -p -nosalt -in encryptfile.txt -out tmp.txt
以上命令中
- “-p”参数用来指定输出加密时使用的key和iv。
- “-e”和”-d”参数用来指定加密还是解密。
- “-nosalt”指定不使用加盐算法,默认使用。
对于上述命令加密的文件,如果想写程序解密,略微复杂。
在openssl: recover key and IV by passphrase的这个讨论中,提及了openssl enc的key是通过加盐和散列后生成的,内部实现使用了EVP_BytesToKey() 函数,但是其特性并不被文档所规范,也就是说版本变更后有可能改变。(就是这么任性,捂脸。。。)OpenSSL的EVP框架,提供了各种算法的一个更高层次抽象,不同加密算法共用一组函数接口,推荐使用。
EVP系列函数,一眼忘过去密密麻麻一堆,参数也复杂。但是如果是对称加密算法,使用以下三个函数就够了。int EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type, ENGINE *impl, unsigned char *key, unsigned char *iv, int enc); int EVP_CipherUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out,int *outl, unsigned char *in, int inl); int EVP_CipherFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl);
对于EVP_CipherInit_ex函数的参数
- ctx,通过 EVP_CIPHER_CTX_new()获得
- type, EVP_get_cipherbyname(algorithm)获得,algorithm可以是各种加密算法那,如aes-128-cbc
- impl, 使用内置算法,传NULL
- key和iv可以自己指定,本文是通过EVP_BytesToKey() 获得
- enc,0表示解密,1表示加密,-1表示保持不变。
下面的代码,可以对已打开的加密文件的句柄,进行解码,并将结果保存到pp_out指向的内存中。
结合了官方的manpage里的和stackoverflow 上的问答。//IN key: password for decrypt //IN algorithm: e.g. "aes-128-cbc" //OUT pp_out: decrypt buffer //Return: >0 Decrypt buffer length, 0 Error int decrypt_open(FILE* in,const unsigned char* key, const char* algorithm,unsigned char**pp_out) { unsigned char inbuf[MAX_CONFIG_LINE]; int inlen, out_blk_len=0; int out_buff_len=0,buff_offset=0; EVP_CIPHER_CTX *ctx; unsigned char cipher_key[EVP_MAX_KEY_LENGTH]; unsigned char cipher_iv[EVP_MAX_IV_LENGTH]; memset(cipher_key,0,sizeof(cipher_key)); memset(cipher_iv,0,sizeof(cipher_iv)); const EVP_CIPHER *cipher; const EVP_MD *dgst=NULL; const unsigned char *salt=NULL; int ret=0; OpenSSL_add_all_algorithms(); cipher=EVP_get_cipherbyname(algorithm); if(cipher==NULL) { printf("Not cipher:%s not supported.\n\n"); return 0; } dgst=EVP_get_digestbyname("md5"); if(dgst==NULL) { printf("Get MD5 object failed."); return 0; } ret=EVP_BytesToKey(cipher,dgst,salt,key,strlen((const char*)key),1,cipher_key,cipher_iv); if(ret==0) { printf("Key and IV generatioin failed.\n"); return 0; } /* Don't set key or IV right away; we want to check lengths */ ctx = EVP_CIPHER_CTX_new(); EVP_CipherInit_ex(ctx, cipher, NULL, NULL, NULL,0); OPENSSL_assert(EVP_CIPHER_CTX_key_length(ctx) == 16); OPENSSL_assert(EVP_CIPHER_CTX_iv_length(ctx) == 16); /* Now we can set key and IV */ EVP_CipherInit_ex(ctx, NULL, NULL, cipher_key, cipher_iv, 0);//The last parameter, 0 decrypt, 1 encrypt. out_buff_len=16*1024; *pp_out=(unsigned char*)malloc(out_buff_len*sizeof(unsigned char)); for (;;) { inlen = fread(inbuf, 1, MAX_CONFIG_LINE, in); if (inlen <= 0) break; //Note: EVP_CipherUpdate does not check output buffer size, make sure that you have enough space, or it may overflow. if(out_buff_len-buff_offset<inlen+EVP_CIPHER_block_size(cipher)-1) { out_buff_len*=2; *pp_out=(unsigned char*)realloc(*pp_out,out_buff_len); } out_blk_len=out_buff_len-buff_offset; if (!EVP_CipherUpdate(ctx, *pp_out+buff_offset, &out_blk_len, inbuf, inlen)) { printf("EVP_CipherUpdate failed.\n"); EVP_CIPHER_CTX_free(ctx); goto error_out; } buff_offset+=out_blk_len; } if (!EVP_CipherFinal_ex(ctx, *pp_out+buff_offset, &out_blk_len)) { printf("EVP_CipherFinal_ex failed.\n"); EVP_CIPHER_CTX_free(ctx); goto error_out; } buff_offset+=out_blk_len; EVP_CIPHER_CTX_free(ctx); return buff_offset; error_out: free(*pp_out); *pp_out=NULL; return 0; }
EVP_BytesToKey() 这个函数将输入的字符串key转换为加密用的cipher_key和cipher_iv。
提醒大家注意的是,命令行工具 “openssl enc”,在 OpenSSL v1.0.0的实现中,使用的摘要算法是MD5,到v1.1.0,更换为SHA256。 -
7z命令行压缩加密文件
2018-09-29 12:02:52假设你的7z 安装目录是C:\Program Files\7-Zip\, 可以使用如下的命令行压缩文件, 其中a表示add, source.csv是被压缩的文件, -p123表示密码是123, -tzip表示压缩格式是zip "C:\Program Files\7-Zip\7z.exe&...假设你的7z 安装目录是C:\Program Files\7-Zip\, 可以使用如下的命令行压缩文件,
其中a表示add, source.csv是被压缩的文件, -p123表示密码是123, -tzip表示压缩格式是zip
"C:\Program Files\7-Zip\7z.exe" a source.csv.zip source.csv -p123 -tzip
参考文档:
-
XP命令行加密功能(转)
2007-08-13 15:52:37XP命令行加密功能(转)[@more@] Windows XP为用户提供了一个特殊功能,那就是用命令行功能 cipher 加密或解密文件或文件夹。 1.命令格式: cipher [{/e|/d}] [/s:di... -
C/C++混编的命令行加密工具
2014-04-05 17:23:12前段时间写了一个基于MFC的文件加密器,不过最近彻底把工作转移到了linux系统,就再写了一个基于命令行的文件加密器。一开始我是想用纯C来写的,但在文件的读写上遇到了问题,于是就借用了C++的文件输入输出流。 ... -
命令行文件加密工具源码
2010-03-02 00:20:00程序使用RC5算法对文件内容进行加密,同时加密文件名,加密后的文件名和文件签名一起...命令行参数介绍加密文件:-e -k key -i filename [-t directory] [-p prefix]例:encrypt.exe -e -k 123456 test.txt C:/encryp -
命令行压缩文件 设置加密算法
2010-03-15 15:20:00这次做项目,客户端是使用VBA做的一个Excel报表,导入到系统中时,需要隐式导出成...使用winzip12.0以上版本外加一个winzip命令行插件程序wzcline32.exe即可实现设置加密算法的功能。解密方法请看另一篇博文。 命令行 -
crypticker::chart_increasing:适用于比特币,以太坊,Litecoin等的简单命令行加密货币价格行情-源码
2021-02-01 14:03:38比特币,以太坊等的命令行加密货币价格行情指示器。 安装/更新 可以通过npm作为全局软件包来完成安装或更新 npm i -g crypticker 用法 全局安装后, crypticker可以作为二进制文件运行 crypticker 旗 类型 描述 --... -
mac zip 命令行 终端压缩加密文件
2019-10-07 06:40:581. 压缩文件 单个文件:zip -er file.zip file.txt 多个文件:zip -er file.zip file1.txt file2.txt 2.压缩文件夹 单个文件夹:zip -er director.zip director 多个文件夹:zip -er director.zip director... -
基于命令行的文件管理器——Java实现
2020-10-30 20:57:33实现了基本的文件操作,如创建、删除、拷贝、深拷贝、加密解密、压缩及解压等功能;将code和.exe文件分开,code文件夹包括了源代码及对应的说明,exe文件夹中打包了jre和.exe文件,实现了基于命令行的文件管理器 -
实验二 基于命令行的文件管理器——Java实现
2020-10-31 09:50:11运用面向对象程序设计思想,基于Java文件管理和I/O框架,实现基于命令行提示的文件管理器,功能要求如下: 1、实现指定文件夹创建、删除、进入。 2、实现指定文件夹下的内容罗列。 3、实现指定文件拷贝和文件夹拷贝... -
使用TrueCrypt的命令行功能实现自动载入加密文件到指定盘符
2010-09-02 00:03:00版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明 ... 我最常用的命令行,这个命令行可以将加密文件D:/ffbb.swf加入到X盘中,并且在加载文件后立即打开盘符: -
利用Windows命令行快速隐藏文件
2017-11-24 22:04:47下面介绍的利用命令行隐藏文件/文件夹的方法,相较于使用第三方软件进行加密、隐藏,优点在于方便快捷,在任何 Windows 电脑上均可立马进行操作,见效快,缺点则在于隐藏并不彻底,可防小白,难防高手。 隐藏: ... -
SQLCipher 命令行使用 后台加密
2014-07-07 11:41:54这次遇到手机终端需要利用SQLCipher加密db文件, -
openssl命令行进行RSA加密解密
2020-07-21 22:08:44然后用公钥对于hello.txt文件加密得到enhello.txt文件 最后用私钥对于enhello.txt文件解密得到outhello.txt文件 控制台命令如下: OpenSSL> genrsa -out rsa_private_key.pem 1024 Generating RSA private ... -
如何分享文件_如何从Linux命令行轻松分享文件
2021-01-15 09:33:22Transfer.sh是一种简单,方便,快捷的命令行文件分享服务。 它允许您上传最多10GB的数据,文件存储14天,免费。您可以最大限度地下载,并且还支持加密以确保安全性。 它支持本地文件系统(本地); 与s3(亚马逊S3)和... -
用命令行功能加解密文件
2019-09-21 17:03:40文件加密对于保护自己的隐私和数据有着很重要位子, ... 答:就是用命令行功能cipher显示或者更改NTFS分区上的目录(文件)的加密。 其格式如下: CIPHER[/E|/D][/S:directory][/A][/I][/F][/Q][... -
给定文件的绝对路径名以及命令行上的文件名,此Java程序将使用预定的密钥对解密文件进行加密-源码
2021-02-15 14:23:10加密解密AES 给定文件的绝对路径名以及命令行上的文件名,此Java程序将使用预定的密钥对解密文件进行加密。 -
sqlcipher 命令行给db外部加密的实现
2015-06-30 16:41:20本文主要实验目的:外部用sqlcipher命令行给已有的数据库文件加密,而在Android程序中解密应用。 1. 首先 sqlcipher命令行Linux环境搭建。 https://www.zetetic.net/sqlcipher/下载源码。 或者 到... -
使用SOOT命令行对APK文件进行解码及包装
2017-07-26 15:06:14使用SOOT命令行对APK文件进行解码及包装 SOOT对APK解包 SOOT将JIMPLE文件转为dex文件 apk的重压缩 加密SOOT对APK解包android-platform 是用于soot编译对android平台jar包,每个版本下各有一个android.jar文件,soot... -
自动加密文件夹命令_拖放文件和文件夹以自动完成命令行
2020-09-22 02:14:50自动加密文件夹命令Did you know that you can drag and drop files and folders to the command prompt or terminal? It simply auto-completes the path, so you don’t have to type the full thing out or ... -
文件批量加密重命名--python脚本AND mysql命令行导入数据库
2019-10-05 03:54:32在考试中学生交上来的报告,需要进行一下文件名加密,这样阅卷老师就不知道是谁的报告了 在百度帮助下,完成了加密和解密脚本, 加密 #!/usr/bin/python # -*- coding: utf-8 -*- # coding:utf8 import os import ... -
C语言 命令行传参进行 异或 加密/解密
2016-05-16 08:03:29对指定文件中的内容或传入的文本参数进行异或加密/解密,并将加密/解密后的结果保存到文档。可以指定进行异或加密/解密时要使用的私钥。 【命令行示例】 [root@localhost]$ ./magicTransfer xCode 64x 这... -
7za 命令行 压缩7zip/7z文件 加密文件名
2016-06-30 09:31:057za -p -mhe -r a destOutputFileName srcFileOrDir1 srcFileOrDir2 .... ...-mhe 加密文件名 Header encryption: Add -mhe to encrypt headers.The password command will automatically deal with encrypted
-
MaxScale 实现 MySQL 读写分离与负载均衡
-
8--毛豆网商业计划书.pdf
-
MySQL学习笔记5
-
Galera 高可用 MySQL 集群(PXC v5.7+Hapro)
-
力扣12. 整数转罗马数字(贪心和硬编码)
-
华为1+X认证——网络系统建设与运维(初级)
-
Leetcode 654. 最大二叉树
-
解决MySQL Workbench导出低版本MySQL时报错Unknown table ‘column_statistics’ in information_schema的问题
-
中央广播电视大学《婚姻家庭法》期末总复习资料(含答案).pdf
-
app软件测试全栈系列精品课程
-
中央广播电视大学《公司财务》期末总复习资料(含答案).pdf
-
Test
-
Java 中实现以换行为结束输入的方法
-
中央广播电视大学《监督学》期末总复习资料(含答案).pdf
-
Menu相关
-
用微服务spring cloud架构打造物联网云平台
-
在 Linux 上构建企业级 DNS 域名解析服务
-
git hard
-
面向突发事件的分布式制造资源协同调度
-
2021年 系统分析师 系列课