优化对称加密的 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操作系统中原生的语言环境,由于其简单.便捷.可以移植等特性常被运维人员作为 ...
随机推荐
- XCTF练习题---MISC---give_you_flag
XCTF练习题---MISC---give_you_flag flag:flag{e7d478cf6b915f50ab1277f78502a2c5} 解题步骤: 1.观察题目,下载附件 2.打开发现是 ...
- Nessus如何解除IP限制以及解决重启失效的后遗症
Nessus如何解除IP限制以及解决重启失效的后遗症 1.解除IP限制 1.获取当前plugins的版本号. https://plugins.nessus.org/v2/plugins.php 2.停 ...
- 【计算机网络】Stanford CS144 Lab Assignments 学习笔记
本文为我的斯坦福计算机网络课的编程实验(Lab Assignments)的学习总结.课程全称:CS 144: Introduction to Computer Networking. 事情发生于我读了 ...
- 就是要让你搞懂Nginx,这篇就够了!
开源Linux 长按二维码加关注~ 作者:渐暖° 出处:blog.csdn.net/yujing1314/article/details/107000737 来源:公众号51CTO技术栈 Nginx ...
- 鸭的NOI ONLINE杂刷
好耶!洛谷账号橙了! 水题 [NOI Online #2 入门组] 未了 这就是一道贪心+二分查找,思路很好想 除法有精度问题,建议不使用除法 code [NOI Online #3 提高组] 水壶 ...
- pyhon对excel的xls与xlsx的读取,写入
import shutilimport osfrom openpyxl import load_workbookfrom xlutils.copy import copyimport win32com ...
- C# 编写一个简单易用的 Windows 截屏增强工具
半年前我开源了 DreamScene2 一个小而快并且功能强大的 Windows 动态桌面软件.有很多的人喜欢,这使我有了继续做开源的信心.这是我的第二个开源作品 ScreenshotEx 一个简单易 ...
- 204. Count Primes - LeetCode
Queston 204. Count Primes Solution 题目大意:给一个数,求小于这个数的素数的个数 思路:初始化一个boolean数组,初始设置为true,先遍历将2的倍数设置为fal ...
- Proxmox 7.2 部署 DoraCloud桌面云,支持vGPU
介绍 本文介绍了使用Proxmox + DoraCloud,将一台图形工作站(配置有Tesla P4显卡)改造成一台桌面云主机.可以满足多个桌面用户同时使用3D应用的需求. 该方案适合于小型工作室.电 ...
- 深入浅出Nginx实战与架构
本文主要内容如下(让读者朋友们深入浅出地理解Nginx,有代码有示例有图): 1.Nginx是什么? 2.Nginx具有哪些功能? 3.Nginx的应用场景有哪些? 4.Nginx的衍生生态有哪些? ...