OpenSSL命令行在Linux下的運用

1. base64编码/解码

  谈到命令行下如何发送邮件附件,很多人想起了uuencode。也可以使用base64编码。以下是openssl base64编码/解码的使用:

QUOTE:
$ openssl base64 < filename.bin > filename.txt
$ openssl base64 -d < filename.txt > filename.bin

2. 校验文件的一致性

  UNIX下校验文件一致性的方法很多,比如sum、cksum、md5sum、sha1sum等。sum和cksum适用于简单校验的场合,生成的校验码容易重复。md5sum有安全漏洞,当前比较推荐的是sha1sum。不过sha1sum在不同的平台用法有些不同。考虑到跨平台性,建议用openssl。

QUOTE:
$ openssl sha1 filename
SHA1(filename)= e83a42b9bc8431a6645099be50b6341a35d3dceb
$ openssl md5 filename
MD5(filename)= 26e9855f8ad6a5906fea121283c729c4

3. 文件加密/解密

  OpenSSL支持很多加密算法,不过一些算法只是为了保持向后兼容性,现在已不推荐使用,比如DES和RC4-40。推荐使用的加密算法是bf(Blowfish)和-aes-128-cbc(运行在CBC模式的128位密匙AES加密算法),加密强度有保障。

加密示例:

QUOTE:
$ openssl enc -aes-128-cbc < filename > filename.aes-128-cbc
enter aes-128-cbc encryption password:
Verifying - enter aes-128-cbc encryption password:

解密示例:

QUOTE:
$ openssl enc -d -aes-128-cbc -in filename.aes-128-cbc > filename
enter aes-128-cbc decryption password:

4. 口令生成和传递

openssl可以生成随机性很强的口令。

QUOTE:
$ openssl rand 15 -base64
s69mj+8ToN2p3Z1KESBG

以上命令要求openssl生成15个字节序列,然后用base64编码,结果产生20个字符。

  在日常生活中,经常可看到这样的情况:系统管理员设置初始密码给用户,然后让用户登录去修改新密码,这给安全带来了隐患。较好的做法是用户生成口令加密后的结果发给管理员,让管理员设置到系统中。

比如对于以上生成的口令,UNIX口令加密方法如下:

QUOTE:
$ openssl passwd -1 s69mj+8ToN2p3Z1KESBG
$1$Rp/btEwK$qhUGFlsIpDtNT1I9MD/Gg1

管理员收集每个用户交给他的加密后的串,写到一个文件中,比如文件名为newpassword:

QUOTE:
user_a:$1$Rp/btEwK$qhUGFlsIpDtNT1I9MD/Gg1
user_b:$1$zmUy5lry$aG45DkcaJwM/GNlpBLTDy0
...

一个用户一行,用户名和密码之间用冒号分隔。

系统管理员运行如下命令导入用户密码:

QUOTE:
$ chpasswd --encrypted < newpassword

对于老UNIX系统,生成口令密码不需要参数-1,比如:

QUOTE:
$ openssl passwd s69mj+8ToN2p3Z1KESBG
Warning: truncating password to 8 characters
FS4lGulQ915WU

如果passwd命令后没有接口令,openssl会提示输入一个:

QUOTE:
$ openssl passwd -1
Password:
Verifying - Password:
$1$jACBc0.C$KR5DcpttXQoKfDiapyvav0
更多相关文章
  • 


    		    使用 openssl 命令行构建 CA \b及证书(一)
    使用 openssl 命令行构建 CA \b及证书 这是一篇快速指南,使用 OpenSSL 来生成 CA (证书授权中心certificate authority).中级 CAintermediate CA和末端证书end certificate.包括 OCSP.CRL 和 CA頒发者Issuer信 ...
  • 


    		    Linux下配置運行jmeter
    在网上看到了大量的jmeter的安装的教程,但是关于linux下安装jmeter的教程却很少,虽然简单,但没有个指导,过程总归是痛苦的,为了应对日益老化的大脑,不得不将文字刻录于此,以供将来回忆. 废话不多说,上正餐. 在安装之前,首先要下载好jmeter和linux下的jdk,我已经下载了apac
  • 


    		    在Linux下成功運行Office 2007
    引入: 虽然有时候因为一时兴起,会安装一个Linux系统来用.可热情一过,就想换回windows,因为娱乐.辦公方面的软件没有与windows一致的.其实,还是有一些方案可以让你如愿以偿的使用windows中的软件的.不过,本文只是简要介绍下Office 2007在Linux下的安装. 环境基于:U
  • openssl对base64编解码的规范支持较差,用它编解码的结果别的语言如php处理很不方便,注意的几点整理如下 1,如果php加密结果做base64编码长度小于64,则需要添加一个换行符openssl才能解码: 2,php需要对base64编码结果每隔64个字符插入一个换行符,openssl才能 ...
  • 转载juniper中文技术http://www.junipers.cn/Junipers/JuniperTech/Networksecurity/NetScreen/20071218/832-1.html 交流论坛
  • 本文主要写了在Linux下如何用Shell脚本解析json数据,以便于在Zabbix中添加适合于业务应用的监控项. 为什么要使用json? json作为一种文本化的数据格式(文本化协议),符合UNIX编程的哲学,既符合透明性(透明性:设计可见,便于审查和调试)又符合文本性(文本性:数据应该保存为文本
  • 在shell命令终端中,Ctrl+n相当于方向向下的方向键,Ctrl+p相当于方向向上的方向键. 在命令终端中通过它们或者方向键可以实现对历史命令的快速查找.这也是快速输入命令的技巧. 在命令终端中可以通过Ctrl+r 实现快速检索使用过的历史命令.Ctrl+r中r是retrieve中r. Ctrl
  • 


    		    Redhat Linux下如何使用KVM虛擬機(視頻)
    KVM(kernel-basedVirtualMachine)是一个开源的系统虚拟化模块,
一周排行
  • 上次介绍了scim自带的scim-chiese输入法,使用起来还是没有sogou,谷歌输入法舒服.现在不一样了! SCIM-GooglePinyin 项目试图将 Android 上的 Google 拼音输入法移植到
  • ios 日志文件分析 iOS app的程序崩溃以后通常会留下一个.crash的日志文件,可以通过这个crash文件迅速查找到哪里崩溃了,但是这个文件中没有平时调试时候那样可以看到的函数名和函数具体调用行数,这些信息都 ...
  • 刚刚在做DEMO,其中引用了自己写的一个个dll文件,结果一编译居然提示:未能找到类型或命名空间名称..... 于是删掉dll重新引用,再编译结果依旧!很是郁闷. 后来经过调查,终于发现了解决方法: 在项目上点右键- ...
  • 1984: 月下“毛景树” Time Limit: 20 Sec  Memory Limit: 64 MBSubmit: 1088  Solved: 348[Submit][Status][Discuss] Desc
  • wp8.1 app退出操作提示
    微软的wp8.1 sdk相比之前wp8 sdk以及相关dll类库,微软又重新编译过,相关系 ...
  •  题目大意: 给定n个点,给每个点都安排一个相同的正方形,使这个点落在正方形的下底边的中间或者上底边的中间,并让这n个正方形不出现相互覆盖,可以共享同一条边,求 这个正方形最大的边长   这里明显看出n个点,每个点都
  •    我们在做图表的时候,有时候需要在单个数据上加链接或点击事件,是在plotOptions里的events里设置的:    如下代码:     plotOptions: { pie: { cursor: 'poin ...
  • yiming
      关于双城 专家团队 总裁专栏 双城荣誉 诚聘英才 双城著作移民服务 移民专题 移民专刊
  • >volume group vg1包括了三个PV,sda1 sdb1 sdc1,各600GB的SAS,先发现其中一个SAS sdc盘呼哧呼哧的想,猜想快挂了. vg1上创建了一个lv1,目前有800GB的数据在 ...
  • "UTF-8"是标准写法,php在Windows下边英文不区分大小写,所以也可以写成"utf-8"."UTF-8"也可以把中间的"-"省 ...