Openssl 加密解密及随机码生成讲解
2015-06-24 11:28
260 查看
嗯……不错的东西
转自http://hi.baidu.com/qishudong/blog/item/bbeb08a57d4fe7f19152ee72.html
1. base64编码/解码
谈到命令行下怎样发送邮件附件很多人想起了uuencode。也能够使用base64编码。以下是openssl base64编码/解码的使用
$ openssl base64 filename.txt
$ openssl base64 -d filename.bin
2. 校验文档的一致性
UNIX下校验文档一致性的方法很多比如sum、cksum、md5sum、sha1sum等。sum和cksum适用于简单校验的场合生成的校验码 容易重复。md5sum有安全漏洞当前比较推荐的是sha1sum。但是sha1sum在不同的平台用法有些不同。考虑到跨平台性建议用 openssl。
$ 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加密算法)加密强度有保障。
加密示例
$ openssl enc -aes-128-cbc filename.aes-128-cbc
enter aes-128-cbc encryption password:
Verifying - enter aes-128-cbc encryption password:
解密示例
$ openssl enc -d -aes-128-cbc -in filename.aes-128-cbc > filename
enter aes-128-cbc decryption password:
4. 口令生成和传递
openssl能够生成随机性很强的口令。
$ openssl rand 15 -base64
s69mj+8ToN2p3Z1KESBG
以上命令需要openssl生成15个字节序列然后用base64编码结果产生20个字符。
在日常生活中经常可看到这样的情况系统管理员配置初始密码给用户然后让用户登录去修改新密码这给安全带来了隐患。较好的做法是用户生成口令加密后 的结果发给管理员让管理员配置到系统中。
比如对于以上生成的口令UNIX口令加密方法如下
$ openssl passwd -1 s69mj+8ToN2p3Z1KESBG
$1$Rp/btEwK$qhUGFlsIpDtNT1I9MD/Gg1
管理员收集每个用户交给他的加密后的串写到一个文档中比如文档名为newpassword
user_a:$1$Rp/btEwK$qhUGFlsIpDtNT1I9MD/Gg1
user_b:$1$zmUy5lry$aG45DkcaJwM/GNlpBLTDy0
...
一个用户一行用户名和密码之间用冒号分隔。
系统管理员运行如下命令导入用户密码
$ chpasswd --encrypted
对于老UNIX系统生成口令密码无需参数-1比如
$ openssl passwd s69mj+8ToN2p3Z1KESBG
Warning: truncating password to 8 characters
FS4lGulQ915WU
假如passwd命令后没有接口令openssl会提示输入一个
$ openssl passwd -1
Password:
Verifying - Password:
$1$jACBc0.C$KR5DcpttXQoKfDiapyvav0
参考2http://hi.baidu.com/edeed/blog/item/c59d8d10e4bede0c213f2ece.html
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
介绍openssl rand 用于产生指定长度个bytes的随机字符。语法
openssl rand[-out file] [-randfile(s)] [-base64] [-hex]numE:\OpenSSL\foo>openssl rand 10
騆oading 'screen' into random state - done
t嬍鴢vA
可以看见这10个字节的随机数显示为乱码可以用 -out 将随机字符放到一个文件中
-base64 / -hex 对随机字符串进行base64编码或用hex格式显示
E:\OpenSSL\foo>openssl rand -hex 10
Loading 'screen' into random state - done
325567f39cb3dbf15a32
E:\OpenSSL\foo>openssl rand -base64 20
Loading 'screen' into random state - done
aA58hKadrquIX1Jfr4COCm9m/NE=
转自http://hi.baidu.com/qishudong/blog/item/bbeb08a57d4fe7f19152ee72.html
1. base64编码/解码
谈到命令行下怎样发送邮件附件很多人想起了uuencode。也能够使用base64编码。以下是openssl base64编码/解码的使用
$ openssl base64 filename.txt
$ openssl base64 -d filename.bin
2. 校验文档的一致性
UNIX下校验文档一致性的方法很多比如sum、cksum、md5sum、sha1sum等。sum和cksum适用于简单校验的场合生成的校验码 容易重复。md5sum有安全漏洞当前比较推荐的是sha1sum。但是sha1sum在不同的平台用法有些不同。考虑到跨平台性建议用 openssl。
$ 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加密算法)加密强度有保障。
加密示例
$ openssl enc -aes-128-cbc filename.aes-128-cbc
enter aes-128-cbc encryption password:
Verifying - enter aes-128-cbc encryption password:
解密示例
$ openssl enc -d -aes-128-cbc -in filename.aes-128-cbc > filename
enter aes-128-cbc decryption password:
4. 口令生成和传递
openssl能够生成随机性很强的口令。
$ openssl rand 15 -base64
s69mj+8ToN2p3Z1KESBG
以上命令需要openssl生成15个字节序列然后用base64编码结果产生20个字符。
在日常生活中经常可看到这样的情况系统管理员配置初始密码给用户然后让用户登录去修改新密码这给安全带来了隐患。较好的做法是用户生成口令加密后 的结果发给管理员让管理员配置到系统中。
比如对于以上生成的口令UNIX口令加密方法如下
$ openssl passwd -1 s69mj+8ToN2p3Z1KESBG
$1$Rp/btEwK$qhUGFlsIpDtNT1I9MD/Gg1
管理员收集每个用户交给他的加密后的串写到一个文档中比如文档名为newpassword
user_a:$1$Rp/btEwK$qhUGFlsIpDtNT1I9MD/Gg1
user_b:$1$zmUy5lry$aG45DkcaJwM/GNlpBLTDy0
...
一个用户一行用户名和密码之间用冒号分隔。
系统管理员运行如下命令导入用户密码
$ chpasswd --encrypted
对于老UNIX系统生成口令密码无需参数-1比如
$ openssl passwd s69mj+8ToN2p3Z1KESBG
Warning: truncating password to 8 characters
FS4lGulQ915WU
假如passwd命令后没有接口令openssl会提示输入一个
$ openssl passwd -1
Password:
Verifying - Password:
$1$jACBc0.C$KR5DcpttXQoKfDiapyvav0
参考2http://hi.baidu.com/edeed/blog/item/c59d8d10e4bede0c213f2ece.html
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
介绍openssl rand 用于产生指定长度个bytes的随机字符。语法
openssl rand[-out file] [-randfile(s)] [-base64] [-hex]numE:\OpenSSL\foo>openssl rand 10
騆oading 'screen' into random state - done
t嬍鴢vA
可以看见这10个字节的随机数显示为乱码可以用 -out 将随机字符放到一个文件中
-base64 / -hex 对随机字符串进行base64编码或用hex格式显示
E:\OpenSSL\foo>openssl rand -hex 10
Loading 'screen' into random state - done
325567f39cb3dbf15a32
E:\OpenSSL\foo>openssl rand -base64 20
Loading 'screen' into random state - done
aA58hKadrquIX1Jfr4COCm9m/NE=
相关文章推荐
- 用ASP编写的加密和解密类
- VBS脚本加密/解密VBS脚本(简易免杀版1.1)
- BAT加密工具 EncryBat 非编译型bat批处理加密方案与代码
- SQLServer 2008中的代码安全(一) 存储过程加密与安全上下文
- C#实现对文件进行加密解密的方法
- C#实现数据包加密与解密实例详解
- C#最简单的字符串加密解密方法
- C#使用伪随机数实现加密用户密码的方法
- asp MD5加密方式使用建议
- C#对称加密与非对称加密实例
- vbs shellcode转换escape加密
- PHP加密解密字符串汇总
- c#通过DES加密算法加密大文件的方法
- 加密web.config的方法分享
- asp.net实现md5加密
- 浅谈discuz密码加密的方式
- C#获取哈希加密生成随机安全码的类实例
- C#编写的Base64加密和解密类
- 教你如何解密js/vbs/vbscript加密的编码异处理小结
- 简单的加密css地址防止别人下载你的CSS文件的方法