优化对称加密的 shell 脚本
前言
之前一篇文章《shell 脚本实现文件对称加密》中,讲述了如何用 shell 脚本实现对称加密。
之后写管理密码脚本时,发觉该脚本的处理速度非常慢,而其原因就在 shell 的处理命令上,而将其中的循环亦或运算改用 awk 处理即可,下面记录需要注意的地方。
亦或运算及函数
笔者使用的 awk 版本不支持 xor() 即内置亦或运算函数,所以必须自己编写亦或运算,下面为亦或运算的实现。
function xor(l, r) {
ret = 0;
bit = 0;
while (l != 0 && r != 0) {
t = ((l % 2) == (r % 2)) ? 0 : 1;
ret = ret + (2^bit)*t;
l = int(l / 2);
r = int(r / 2);
bit++;
}
while (l != 0) {
t = ((l % 2) == 0) ? 0 : 1;
ret = ret + (2^bit)*t;
l = int(l / 2);
bit++;
}
while (r != 0) {
t = ((r % 2) == 0) ? 0 : 1;
ret = ret + (2^bit)*t;
r = int(r / 2);
bit++;
}
return ret;
}
但是手机上的 awk 版本还不支持自定义函数,无奈只能将这段函数里的代码放到主过程上。
传递数据
shell 中往 awk 脚本传递数据可以用 -v "var=value" 方法,但是当数据量过大时就只能用管道传递,否则会报 Argument list too long 的错误,下面是一个示范例子。
# variable 'data' contains a lot of data
echo -ne "${data}"|awk '
BEGIN {
print($0); # print data
}
'
测试结果对比
对一个 1395351 字节(约为 1.4M )大小的文件,用新的脚本测试结果如下:
3.24s user
0.10s system
102% cpu
3.244 total
而用旧的脚本跑了 20 分钟都还未处理完成,可见其速度上的差距。
后话
对于 awk 的语法还有 shell 脚本优化等,还有很多需要学习的地方。
密码管理脚本在笔者的 Github 上,该脚本基本实现了一个小型 key-value 数据库,有空会单独分离出来实现一个功能更完整的 key-value 数据库。
优化对称加密的 shell 脚本的更多相关文章
- shell 脚本实现文件对称加密
前言 之前手机里管理密码的脚本,都是直接编写进纯文本然后进行多次归档及压缩来实现不明文存储,一直觉得不太安全,于是昨天晚上编写脚本实现了简单的文件对称加密. 网上文章都利用 openssl 来进行文件 ...
- shell脚本加密
如何保护自己编写的shell程序要保护自己编写的shell脚本程序,方法有很多,最简单的方法有两种:1.加密 2.设定过期时间,下面以shc工具为例说明: 一.下载安装shc工具shc是一个加密s ...
- 转载:Shell 脚本加密 - 略有修改
shc是一个加密shell脚本的工具.它的作用是把shell脚本转换为一个可执行的二进制文件. shc 安装 yum -y install shc 如果yum不能安装,请移步官方下载rpm包 http ...
- shell 脚本加密
日常编写shell脚本时会写一些账号和密码写入脚本内,但是不希望泄露账号密码,所以对shell脚本进行加密变成可执行文件. 主要使用 shc 对 Linux shell 脚本加密,shc是一个专业的加 ...
- Linux之Shell 脚本加密工具-shc
Much effort, much prosperity. 为什么要加密Shell脚本呢?当然是为了安全! 可能脚本里面涉及到密码之类的就需要进行加密了 一.下载安装shc工具 要保护自己编写的she ...
- linxu下的shell脚本加密,shell生成二机制可执行文件
再安全的加密也抵不过逆向,斗智斗勇吧,持续加密持续破解 1.简单的加密:gzexe file.sh 2.使用shc加密:下载地址:http://www.datsi.fi.upm.es/~frosal/ ...
- 浅谈自底向上的Shell脚本编程及效率优化
作者:沐星晨 出处:http://blog.csdn.net/sosodream/article/details/6276758 浅谈自底向上的Shell脚本编程及效率优化 小论文,大家多批评指导:) ...
- 对shell脚本进行加密
用shell脚本对系统进行自动化维护,简单,便捷而且可移植性好.但shell脚本是可读写的,很有可能会泄露敏感信息,如用户名,密码,路径,IP等.同样,在shell脚本运行时会也泄露敏感信息.请问如何 ...
- shell脚本加密方式
--作者:飞翔的小胖猪 --创建时间:2021年5月17日 --修改时间:2021年5月17日 说明 shell作为Linux操作系统中原生的语言环境,由于其简单.便捷.可以移植等特性常被运维人员作为 ...
随机推荐
- 北航内核操作系统-lab1
1.实验目的. 2.实验内容. 2.1Exercise 1.1 请修改 include.mk 文件,使交叉编译器的路径正确.之后执行 make指令,如果配置一切正确,则会在gxemul 目录下生成v ...
- 推荐一款数据mock框架,无需任何依赖,贼牛逼
fox-mock 是基于Java Agent实现的自测,联调Mock利器.能解决你的这些问题: 开发过程中,依赖了下游多个接口,想跑个单测都必须得等下游把服务部署好 联调过程中,下游某个接口出问题,阻 ...
- ansible的roles使用
1.创建roles文件夹 mkdir roles 2.在roles文件夹里面创建文件夹 cd roles/ mkdir {nginx,uwsgi,redis,mysql} 3.cd nginx 4.m ...
- 这 BUG,绝了
上周只上了三天班,但我也丝毫不敢懈怠,BUG 更是一个也没少写. 看着满屏幕的 ERROR,我陷入沉思.为什么我写的代如此烂,无法像大牛们写的那般优雅? 越想越自卑,越想越抑郁.我觉得这样不行,一定得 ...
- 1903021121—刘明伟—Java第六周作业—java类
项目 内容 课程班级博客链接 19信计班(本) 作业要求链接 第6周作业 扩展阅读 java面向对象的概念和定义 作业要求 每道题要有题目,代码,截图(只截运行结果). 题目1: 一个Phone ...
- 深入解读SQL的聚集函数
摘要:本文从基本聚集操作入手,介绍常用的SQL语法,以及一些扩展的聚集功能,同时会讲到在GaussDB(DWS)里聚集相关的一些优化思路. 本文分享自华为云社区<GaussDB(DWS) SQL ...
- K8S 使用Kubeadm搭建单个Master节点的Kubernetes(K8S)~本文仅用于测试学习
01.集群规划 系统版本:CentOS Linux release 7.6.1810 (Core) 软件版本:kubeadm.kubernetes-1.15.docker-ce-18.09 硬件要求: ...
- Fail2ban 配置详解 动作配置
### # 包含配置 ### [INCLUDES] before = iptables-common.conf ### # 定义动作 ### [Definition] actionstart = &l ...
- MongoDB 设置用户和密码
每日一句 Zeal without knowledge is fire without light. 没有知识的热忱犹如火之无光. 给每个数据库设置单独的管理员 我们除了可以设置数据库的超级管理员以外 ...
- 关于Redis的问题探讨(二):Range方法返回的对象是LinkeHashMap以及转换办法
上一篇:关于Redis的问题探讨(一):为何存放集合偏向于转String后存放而非直接存 在上篇中发现了一个问题,明明存的是一个对象的集合,为什么通过range方法返回的却是LinkeHashMap ...