oc php 对称加密,Openssl 之 对称加密、单向加密笔记

本文介绍了如何使用OpenSSL进行对称加密(如DES3),包括工作流程、语法格式、选项说明,以及如何加密和解密文件,并详细讲解了加盐、密钥管理和不同模式的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、介绍

enc - 对称加密例程,使用对称密钥对数据进行加解密,特点是速度快,能对大量数据进行处理。算法有流算法和分组加密算法,流算法是逐字节加密,数据经典算法,但由于其容易被破译,现在已很少使用;分组加密算法是将数据分成固定大小的组里,然后逐组进行加密,比较广为人知的是DES3。分组算法中又有ECB,CBC,CFB,OFB,CTR等工作模式,其中默认选CBC工作模式。

二、语法格式

openssl enc -ciphername [-in filename] [-out filename] [-pass arg] [-e] [-d]

[-a/-base64] [-A] [-k password] [-kfile filename] [-K key] [-iv IV] [-S salt]

[-salt] [-nosalt] [-z] [-md] [-p] [-P] [-bufsize number] [-nopad] [-debug] [-none]

[-engine id]

三、选项说明

-in filename

要加密/解密的输入文件,缺省为标准输入。

-out filename

要加密/解密的输出文件,缺省为标准输出。

-pass arg

输入文件如果有密码保护,在这里输入密码。-pass 提供了几种传入密码的方式。传统是利用-k 选项传入密码的。

-pass pass:"123"      #密码是123

-pass pass:123        #密码是123

-pass evn:VAR         #密码从环境变量VAR中去

-pass file:p.txt      #密码从文件p.txt第一行取,不包括换行符,注意DOS格式的^M及回车符。

-pass fd:3            #密码从文件描述符3中读

-pass stdin           #标准输入

-salt

加盐,这是开启的默认选项,使用-nosalt已明确关闭此选项,除非为了兼容性的考虑,否则在新程序中请使用此选项。这是一个神奇的选项,加盐后,相同的明文可以得到不同的密文。默认情况下,盐值是随机生成的,可以使用-S选项明确指定盐值。

有了盐值后,相同的明文可以产生不同的密文并在密文中包含了盐值

-nosalt

和salt对应不加盐

-e

加密  一个缺省会set的option, 把输入数据加密。

-d

解密输入数据。

-a

用base64编码处理数据。set了这个option表示在加密之后的数据还要用  base64编码捏一次,解密之前则先用base64编码解码。

-k password

一个过时了的项,为了和以前版本兼容。现在用-key代替了。

-kfile filename

同上,被passin代替。

-K key

以16进制表示的密码。

-iv IV

作用完全同上。

-p

打印出使用的密码。

-P

作用同上,但打印完之后马上退出。

-bufsize number

设置I/O操作的缓冲区大小

- debug

打印调试信息。

更多参数信息请参考:# openssl enc --help

例:使用openssl对/etc/fstab进行加密

加密前:[root@1inux ssl]# cat fstab

#

# /etc/fstab

# Created by anaconda on Thu Mar 26 20:01:38 2015

#

# Accessible filesystems, by reference, are maintained under '/dev/disk'

# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#

/dev/mapper/vg0-root    /                       ext4    defaults        1 1

UUID=0d0698ff-1645-4ff8-af27-fc6e73573941 /boot                   ext4    defaults        1 2

/dev/mapper/vg0-usr     /usr                    ext4    defaults        1 2

/dev/mapper/vg0-var     /var                    ext4    defaults        1 2

/dev/mapper/vg0-swap    swap                    swap    defaults        0 0

tmpfs                   /dev/shm                tmpfs   defaults        0 0

devpts                  /dev/pts                devpts  gid=5,mode=620  0 0

sysfs                   /sys                    sysfs   defaults        0 0

proc                    /proc                   proc    defaults        0 0

加密:[root@1inux ssl]# openssl enc -e -des3 -pass pass:1 -a -salt -in fstab -out fstab.des3

加密后文件[root@1inux ssl]# cat fstab.des3

U2FsdGVkX1/XypmPFRgpK3Gr+nZeWqIUS0IRDEDOFOOj3ZKbhlOmpcNQf7t37xSa

P6pho1z+u3AZc9H3bgp6savgny7X0ud3SjcQL5nd1/Tk+h9GEVH52B5Btg8gwDpM

W9XDFQk+eAL4ZYxYuZVdyxu6ppQ6UEjxLV4LiXcfGAoGu7XDgrcpG0vEojYfWoNS

xy8jkXOY7LW4dLi2wdlWBh3H9dcaJDmx96RhvFkrHEFOR2dMdRplEoh9BCX75MuC

j2I73zNjku7Ig8WDABfZXLWqiQoA9107AsiXCgfQ2KRLFzWFB6wFFaaN/HF3Raht

WtQNI13IYUuDIzg8xtJq+g3om3TKwFsX8EX75LrrKLPrgH3PENvycyzqEHbRwfE4

EOg8PHSqnV4NCkOH58vhazMlG/79h2XW29K0+t2WN5EdJevTSB/59i3D3QMQEuUs

1pPz9xKDg6csDy+qTVJCz2B+44cEi3eOC2k5f8T06WiDw6kvMkl7YfpkjJ0CXviT

cDcOLWIn+sOMoKnZBoFIoLVk2cF6rs5S0d6gj22FBydRNMVfAA/0o6pR1cX99lbC

mhVem2pCD2oC0ZG8yFI7iUFc94ctWCzaiR4eGWSrT7TLNkzuiNxpPSqM+O8l5rYc

hb7GXTjCS+s5NVIkZy6Wi27HmfZOJw0DuPFvgvBlcWRzlu4KwNF+RRdZ7gWY4s12

n/ymOUNEEcesrrCnADwjcLmdtMzzgF9s09IRLH6S5gmlM1oYjD+J8neRKBE53xKS

+YyWJkW/LW36BNkoXG7Wq+W/fHNOGmPbHBoGgqCT7tguycfuLWCqNYOtq6zJlUCj

70Ip6MQ55nGi3JoD4HLl865u0thPbuuIMrbxdvcSmkL11LpQSKiHl4zANAeEkDe8

tEmVSbisYWMTmKnxrJAoSp6L5+jApiBXtLJsxd5/6BtsVFk5qokpiuLW0evs0Y5q

Jrf2bCuKXDdCLVWHkjFX7QnHNP5XEkEy5Wfa6nnru2C5mvWhtE2703YkjvDD7LPF

kvIj2mIG+/vi9AIcU3Foi1wA2gDYW+8y/IV5t5/oFuEcFqdSVZaOc4HEsEIBy3+B

oJfDFkmXo5o3EfGFKetYlh6Db7TGd4fuP3iydHNnw92q1QWWZuETK1iL6SHXppRr

pg71NwIWzASIvg+XEVIA/4KBbED9htIjZu1Did209pVjIrS0eIJqyqoB4pZHjUsj

yLfeG34SpKHDWvCPHLF/pITmQHeDFMFeyBfFtWZGEsQ=

[root@1inux ssl]#

解密:[root@1inux ssl]# openssl enc -d -des3 -pass pass:1 -a -salt -in fstab.des3 -out fstab.new

解密后[root@1inux ssl]# cat fstab.new

#

# /etc/fstab

# Created by anaconda on Thu Mar 26 20:01:38 2015

#

# Accessible filesystems, by reference, are maintained under '/dev/disk'

# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info

#

/dev/mapper/vg0-root    /                       ext4    defaults        1 1

UUID=0d0698ff-1645-4ff8-af27-fc6e73573941 /boot                   ext4    defaults        1 2

/dev/mapper/vg0-usr     /usr                    ext4    defaults        1 2

/dev/mapper/vg0-var     /var                    ext4    defaults        1 2

/dev/mapper/vg0-swap    swap                    swap    defaults        0 0

tmpfs                   /dev/shm                tmpfs   defaults        0 0

devpts                  /dev/pts                devpts  gid=5,mode=620  0 0

sysfs                   /sys                    sysfs   defaults        0 0

proc                    /proc                   proc    defaults        0 0

[root@1inux ssl]#

**********笔记***********************************************

对称加密:加密和解密使用同一个密钥

依赖于:算法和密钥

安全性依赖于密钥,而非算法

常见算法:

DES:Data Encryption standard,56bits (IBM研究员研发出来的)【使用56位秘钥】

3DES:重新设计的另一种算法 不同于DES

AES:Advanced Encrpytion Standard 【秘钥有多重变化 128bits,192,256,512】

(AES 可变化的 可自动选择长度) 【目前常用】

Blowfish:

Twofish:

IDEA:商业

RC6

CAST5

特性:

1、加密、解密使用同一密钥

2、将明文分割成固定大小的块,逐个进行加密;

缺陷:

1、密钥过多:

2、密钥分发

********************************************************

》》》》》》》》》》扩展 :单向加密《《《《《《《《《《《《《《《

单向加密:

主要用途:提取数据特征码特性:

1、定长输出:无论原来的数据是多大级别,其加密结果长度一样;

2、雪崩效应:原始数据微小改变,将会导致结果巨大变化;

3、不可逆:

算法:md5, sha1

工具:openssl dgst, md5sum, sha1sum, sha224sum, sha256sum, sha384sum, sha512sum

# openssl dgst -CIPHER /PATH/TO/SOMEFILE...[root@1inux CA]# openssl dgst -sha256 index.txt

SHA256(index.txt)= 5a894d470ade08ff3379a5e8f4817fef115ee83f6bb854f59e2b50b1b317679f

[root@1inux CA]# sha256sum index.txt

5a894d470ade08ff3379a5e8f4817fef115ee83f6bb854f59e2b50b1b317679f  index.txt

[root@1inux CA]#

MAC: 消息认证码,单向加密的一种延伸应用,用于实现在网络通信中保证所传输的数据的完整性;

机制:

CBC-MAC

HMAC:使用md5或sha1算法

生成用户密码:

# openssl passwd -1 -salt 8bits随机数[root@1inux CA]# openssl passwd -1 -salt 12345678

Password:

$1$12345678$XM4P3PrKBgKNnTaqG9P0T/

[root@1inux CA]#

生成随机数:

# openssl rand -hex|-base64 NUM[root@1inux CA]# openssl rand -hex 8

187b52f635ba0a03

[root@1inux CA]# openssl rand -hex 8

71585682fc67c452

[root@1inux CA]# openssl rand -base64 8

YHlapjLwL9I=

[root@1inux CA]# openssl rand -base64 8

MHG5PifRDLg=

[root@1inux CA]#

http://www.cnblogs.com/AloneSword/p/3481126.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值