什么是对称加密?

采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。

目录

1 定义

2 工作过程

3 常用算法

4 优缺点

定义

需要对加密和解密使用相同密钥的加密算法。由于其速度快,对称性加密通常在消息发送方需要加密大量数据时使用。对称性加密也称为密钥加密。

所谓对称,就是采用这种加密方法的双方使用方式用同样的密钥进行加密和解密。密钥是控制加密及解密过程的指令。算法是一组规则,规定如何进行加密和解密。

因此[1]  加密的安全性不仅取决于加密算法本身,密钥管理的安全性更是重要。因为加密和解密都使用同一个密钥,如何把密钥安全地传递到解密者手上就成了必须要解决的问题。

工作过程

下面举个例子来简要说明一下对称加密的工作过程。甲和乙是一对生意搭档,他们住在不同的城市。由于生意上的需要,他们经常会相互之间邮寄重要的货物。为了保证货物的安全,他们商定制作一个保险盒,将物品放入其中。他们打造了两把相同的钥匙分别保管,以便在收到包裹时用这个钥匙打开保险盒,以及在邮寄货物前用这把钥匙锁上保险盒。

上面是一个将重要资源安全传递到目的地的传统方式,只要甲乙小心保管好钥匙,那么就算有人得到保险盒,也无法打开。这个思想被用到了现代计算机通信的信息加密中。在对称加密中,数据发送方将明文(原始数据)和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。接收方收到密文后,若想解读原文,则需要使用加密密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密。

openssl enc -ciphername [-in filename] [-out filename] [-pass arg] [-e] [-d] [-a/-base64] [-k password] [-S salt] [-salt] [-md] [-p/-P]

选项说明:

-ciphername:指定对称加密算法(如des3),可独立于enc直接使用,如openssl des3或openssl enc -des3。推荐在enc后使用,这样不依赖于硬件

-in filename :输入文件,不指定时默认是stdin

-out filename:输出文件,不指定时默认是stdout

-e:对输入文件加密操作,不指定时默认就是该选项

-d:对输入文件解密操作,只有显示指定该选项才是解密

-pass:传递加、解密时的明文密码。若验证签名时实用的公钥或私钥文件是被加密过的,则需要传递密码来解密。密码的格式见”openssl 密码格式”

-k     :已被”-pass”替代,现在还保留是为了兼容老版本的openssl

-base64:在加密后和解密前进行base64编码或解密,不指定时默认是二进制。注意,编码不是加解密的一部分,而是加解密前后对数据的格式”整理”

-a:等价于-base64

-salt:单向加密时使用salt复杂化单向加密的结果,此为默认选项,且使用随机salt值

-S salt:不使用随机salt值,而是自定义salt值,但只能是16进制范围内字符的组合,即”0-9a-fA-F”的任意一个或多个组合

-p:打印加解密时salt值、key值和IV初始化向量值(也是复杂化加密的一种方式),解密时还输出解密结果,见后文示例

-P:和-p选项作用相同,但是打印时直接退出工具,不进行加密或解密操作

-md:指定单向加密算法,默认md5。该算法是拿来加密key部分的,见后文分析。

支持的单向加密算法有:

-md4            to use the md4 message digest algorithm-md5            to use the md5 message digest algorithm-ripemd160      to use the ripemd160 message digest algorithm-sha            to use the sha message digest algorithm-sha1           to use the sha1 message digest algorithm-sha224         to use the sha224 message digest algorithm-sha256         to use the sha256 message digest algorithm-sha384         to use the sha384 message digest algorithm-sha512         to use the sha512 message digest algorithm-whirlpool      to use the whirlpool message digest algorithm

登录后复制

支持的对称加密算法有:

-aes-128-cbc               -aes-128-cbc-hmac-sha1     -aes-128-cfb             -aes-128-cfb1              -aes-128-cfb8              -aes-128-ctr             -aes-128-ecb               -aes-128-gcm               -aes-128-ofb             -aes-128-xts               -aes-192-cbc               -aes-192-cfb             -aes-192-cfb1              -aes-192-cfb8              -aes-192-ctr             -aes-192-ecb               -aes-192-gcm               -aes-192-ofb             -aes-256-cbc               -aes-256-cbc-hmac-sha1     -aes-256-cfb             -aes-256-cfb1              -aes-256-cfb8              -aes-256-ctr             -aes-256-ecb               -aes-256-gcm               -aes-256-ofb             -aes-256-xts               -aes128                    -aes192                  -aes256                    -bf                        -bf-cbc                  -bf-cfb                    -bf-ecb                    -bf-ofb                  -blowfish                  -camellia-128-cbc          -camellia-128-cfb        -camellia-128-cfb1         -camellia-128-cfb8         -camellia-128-ecb        -camellia-128-ofb          -camellia-192-cbc          -camellia-192-cfb        -camellia-192-cfb1         -camellia-192-cfb8         -camellia-192-ecb        -camellia-192-ofb          -camellia-256-cbc          -camellia-256-cfb        -camellia-256-cfb1         -camellia-256-cfb8         -camellia-256-ecb        -camellia-256-ofb          -camellia128               -camellia192             -camellia256               -cast                      -cast-cbc                -cast5-cbc                 -cast5-cfb                 -cast5-ecb               -cast5-ofb                 -des                       -des-cbc                 -des-cfb                   -des-cfb1                  -des-cfb8                -des-ecb                   -des-ede                   -des-ede-cbc             -des-ede-cfb               -des-ede-ofb               -des-ede3                -des-ede3-cbc              -des-ede3-cfb              -des-ede3-cfb1           -des-ede3-cfb8             -des-ede3-ofb              -des-ofb                -des3                      -desx                      -desx-cbc                -id-aes128-GCM             -id-aes128-wrap            -id-aes128-wrap-pad      -id-aes192-GCM             -id-aes192-wrap            -id-aes192-wrap-pad      -id-aes256-GCM             -id-aes256-wrap            -id-aes256-wrap-pad      -id-smime-alg-CMS3DESwrap  -idea                      -idea-cbc                 -idea-cfb                  -idea-ecb                  -idea-ofb                -rc2                       -rc2-40-cbc                -rc2-64-cbc              -rc2-cbc                   -rc2-cfb                   -rc2-ecb                 -rc2-ofb                   -rc4                       -rc4-40                  -rc4-hmac-md5              -seed                      -seed-cbc                -seed-cfb                  -seed-ecb                  -seed-ofb

登录后复制

在给出openssl enc命令用法示例之前,先解释下对称加密和解密的原理和过程。

对称加解密时,它们使用的密码是完全相同的,例如”123456″,但这是密码,且是明文密码,非常不安全,所以应该对此简单密码进行复杂化。最直接的方法是使用单向加密计算出明文密码的hash值,单向加密后新生成的密码已经比较安全(称之为密钥比较好),可以作为对称加密时的对称密钥。另外,由于同一单向加密算法对相同明文密码的计算结果是完全一致的,这样解密时使用相同的单向加密算法就能计算出完全相同的密钥,也就是解密时的对称密钥。如果想要更安全,还可以在对称加密后对加密文件进行重新编码,如使用”base64″、二进制或hex编码方式进行编码,但对应的在解密前就需要先解码,解码后才能解密。

所以,将对称加、解密的机制简单概括如下:

对称加密机制:根据指定的单向加密算法,对输入的明文密码进行单向加密(默认是md5),得到固定长度的加密密钥,即对称密钥,再根据指定的对称加密算法,使用对称密钥加密文件,最后重新编码加密后的文件。即单向加密明文密码结果作为对称密钥、使用对称密钥加密文件、对文件重新编码。

对称解密机制:先解码文件,再根据单向加密算法对解密时输入的明文密码计算得到对称密钥,依此对称密钥对称解密解码后的文件。

因此,解密过程中使用的解码方式、单向加密和对称加密算法都必须一致,且输入的密码必须是正确密码。但需要注意的一点是,解密时可以不指定salt,因为加密时使用的salt会记录下来,解密时可以读取该salt。

如下图所示,分别是加密和解密过程示意图。

什么是对称加密?什么是对称加密?

示例:

以加密/etc/fstab的备份文件/tmp/test.txt为例。

(1).首先测试openssl enc的编码功能。由于未指定密码选项”-k”或”-pass”,所以仅仅只进行编码而不进行加密,因此也不会提示输入密码。

[root@xuexi tmp]# openssl enc -a -in test.txt -out test_base64.txt[root@xuexi tmp]# cat test_base64.txtCiMKIyAvZXRjL2ZzdGFiCiMgQ3JlYXRlZCBieSBhbmFjb25kYSBvbiBUaHUgTWF5IDExIDA0OjE3OjQ0IDIwMTcKIwojIEFjY2Vzc2libGUgZmlsZXN5c3RlbXMsIGJ5IHJlZmVyZW5jZSwgYXJlIG1haW50YWluZWQgdW5kZXIgJy9kZXYvZGlzaycKIyBTZWUgbWFuIHBhZ2VzIGZzdGFiKDUpLCBmaW5kZnMoOCksIG1vdW50KDgpIGFuZC9vciBibGtpZCg4KSBmb3IgbW9yZSBpbmZvCiMKVVVJRD1iMmE3MGZhZi1hZWE0LTRkOGUtOGJlOC1jNzEwOWFjOWM4YjggLyAgICAgICAgICAgICAgICAgICAgICAgeGZzICAgICBkZWZhdWx0cyAgICAgICAgMCAwClVVSUQ9MzY3ZDZhNzctMDMzYi00MDM3LWJiY2ItNDE2NzA1ZWFkMDk1IC9ib290ICAgICAgICAgICAgICAgICAgIHhmcyAgICAgZGVmYXVsdHMgICAgICAgIDAgMApVVUlEPWQ1MDUxMTNjLWRhYTYtNGMxNy04YjAzLWIzNTUxY2VkMjMwNSBzd2FwICAgICAgICAgICAgICAgICAgICBzd2FwICAgIGRlZmF1bHRzICAgICAgICAwIDAK

登录后复制

再以base64格式进行解码。

[root@xuexi tmp]# openssl enc -a -d -in test_base64.txt               ## /etc/fstab# Created by anaconda on Thu May 11 04:17:44 2017## 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#UUID=b2a70faf-aea4-4d8e-8be8-c7109ac9c8b8 /                       xfs     defaults        0 0UUID=367d6a77-033b-4037-bbcb-416705ead095 /boot                   xfs     defaults        0 0UUID=d505113c-daa6-4c17-8b03-b3551ced2305 swap                    swap    defaults        0 0

登录后复制

实际上,上述编码和解码的过程严格地说也是对称加密和解密,因为openssl enc默认会带上加密选项”-e”,只不过因为没有指定输入密码选项,使用的加密密码为空而已,且单向加密算法使用的也是默认值。解密时也一样。

(2).测试使用des3对称加密算法加密test.txt文件。

[root@xuexi tmp]# openssl enc -a -des3 -in test.txt -out test.1 -pass pass:123456 -md md5

登录后复制

加密后,查看加密后文件test.1的结果。

[root@xuexi tmp]# cat test.1U2FsdGVkX1+c/d4NsXnY6Pd7rcZjGSsMRJWQOP0s5sxH6aLE5iCYjKEAbGac//iRwkUUh6a57OpUA3+OOCKB4z+IxBcKo67BUDGR9vYeCfkobH9F+mSfVzZbXBrJmxwf921tJ+8K+yKB6DjJfufpW+DWXmH8MFyvK60wnYHsfUQOp81EvaUtEfqEKIS8hgg74NTOyww+/VMDdc2wmkf08XNQUPlVtLaSx3vuBisxRdu8raiKWGGOB7qCwELCxDquNaRCIh0VjjffGohAOMMsAQ2kFCDUKx0Z4Df5fvifhPXoHfsj2lI216BPG5Cy88K2KV78DoBm4pnMAymo/HRRF95LjvWYZIN88hIVN67u2j9zqSGeuyJakMyDVhYYmrHlsMr2YTbTwus2DiO6qAzt/0a9nocTVKfGR81Xsh0a0ZudjtrMl5H36YJawpldvUCaDzXPsbpQrp0VGi2HvJ4EVKKEx2uh8XYWmJ4ytj1s1wtCR6wQhmERtInGwULWTyI+agXStSB5XzsvAJRJvexsaNycj5lAoQ8O6YXEj7B0inB7nBQTFbwkXyvJqXpr1179i67leYc59OvlhRMA+GLW4g/Mg5dN5SBmgt1ChOJs4887zAUyLYrLvR4zDK6IQN/MP6F15c9V+m9pw2t32sUQQmYrYqOV/AQf0t0EwvA0Myjmfqtvmp555Q==

登录后复制

解密文件test.1。

[root@xuexi tmp]# openssl enc -a -des3 -d -in test.1 -out test.2 -pass pass:123456 -md md5 [root@xuexi tmp]# cat test.2 ## /etc/fstab# Created by anaconda on Thu May 11 04:17:44 2017## 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#UUID=b2a70faf-aea4-4d8e-8be8-c7109ac9c8b8 /                       xfs     defaults        0 0UUID=367d6a77-033b-4037-bbcb-416705ead095 /boot                   xfs     defaults        0 0UUID=d505113c-daa6-4c17-8b03-b3551ced2305 swap                    swap    defaults        0 0

登录后复制

(3).加密时带上点盐salt。其实不写时默认就已经加入了,只不过是加入随机盐值。使用-S可以指定明确要使用的盐的值。但是盐的值只能是16进制范围内字符的组合,即”0-9a-fA-F”的任意一个或多个组合。

[root@xuexi tmp]# openssl enc -a -des3 -S 'Fabc' -in test.txt -out test.1 -pass pass:123456 -md md5

登录后复制

解密。解密时不用指定salt值,即使指定了也不会影响解密结果。      

[root@xuexi tmp]# openssl enc -a -des3 -d -in test.1 -pass pass:123456 -md md5                ## /etc/fstab# Created by anaconda on Thu May 11 04:17:44 2017## 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#UUID=b2a70faf-aea4-4d8e-8be8-c7109ac9c8b8 /                       xfs     defaults        0 0UUID=367d6a77-033b-4037-bbcb-416705ead095 /boot                   xfs     defaults        0 0UUID=d505113c-daa6-4c17-8b03-b3551ced2305 swap                    swap    defaults        0 0

登录后复制

[root@xuexi tmp]# openssl enc -a -des3 -d -S 'Fabcxdasd' -in test.1 -pass pass:123456 -md md5 ## /etc/fstab# Created by anaconda on Thu May 11 04:17:44 2017## 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#UUID=b2a70faf-aea4-4d8e-8be8-c7109ac9c8b8 /                       xfs     defaults        0 0UUID=367d6a77-033b-4037-bbcb-416705ead095 /boot                   xfs     defaults        0 0UUID=d505113c-daa6-4c17-8b03-b3551ced2305 swap                    swap    defaults        0 0

登录后复制

(4).在测试下”-p”和”-P”选项的输出功能。小写字母p不仅输出密钥算法结果,还输出加解密的内容,而大写字母P则只输出密钥算法结果。

加密时的情况。

[root@xuexi tmp]# openssl enc -a -des3 -S 'Fabc' -in test.txt -out test.1 -pass pass:123456 -md md5 -psalt=FABC000000000000key=885FC58E6C822AEFC8032B4B98FA0355F8482BD654739F3Div =5128FDED01EE1499

登录后复制

其中key就是单向加密明文密码后得到的对称密钥,iv是密码运算时使用的向量值。

再看解密时的情况,此处加上了salt。

[root@xuexi tmp]# openssl enc -a -des3 -d -S 'Fabc' -in test.1 -pass pass:123456 -md md5 -Psalt=FABC000000000000key=885FC58E6C822AEFC8032B4B98FA0355F8482BD654739F3Div =5128FDED01EE1499

登录后复制

若解密时不指定salt,或者随意指定salt,结果如下。

[root@xuexi tmp]# openssl enc -a -des3 -d -in test.1 -pass pass:123456 -md md5 -P         salt=FABC000000000000key=885FC58E6C822AEFC8032B4B98FA0355F8482BD654739F3Div =5128FDED01EE1499

登录后复制

[root@xuexi tmp]# openssl enc -a -des3 -S 'FabM' -d -in test.1 -pass pass:123456 -md md5 -Psalt=FABC000000000000key=885FC58E6C822AEFC8032B4B98FA0355F8482BD654739F3Div =5128FDED01EE1499

登录后复制

可见,解密时,只要指定和加密时相同编码格式和单向加密算法,密钥的结果就是一样的,且解密时明确指定salt是无意义的,因为它可以读取到加密时使用的salt。

甚至,解密时指定不同的对称加密算法,密钥结果也是一样的。

[root@xuexi tmp]# openssl enc -a -desx -d -in test.1 -pass pass:123456 -md md5 -p salt=FABC000000000000key=885FC58E6C822AEFC8032B4B98FA0355F8482BD654739F3Div =5128FDED01EE1499

登录后复制

由此,能推理出对称加密时使用的对称密钥和对称算法是毫无关系的。

以上就是什么是对称加密?的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/3165731.html

(0)
上一篇 2025年3月31日 03:01:13
下一篇 2025年3月31日 03:01:18

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • vuejs怎么实现密码加密

    vuejs实现密码加密的方法:1、通过npm引入“crypto-js”依赖;2、创建js文件引入“crypto-js”并写入加密方法;3、在需要加密的组件内使用cryptoObj加密方法即可。 本文操作环境:windows7系统、vue2.…

    2025年4月5日
    200
  • 如何进行OpenSSL基础中的加密及解密

    当提到openssl时,首先必须提到ssl。可能没有人希望他们的网络活动被其他网民监听到,当我们在日常上网时。因此就需要一种协议为我们的网络通信保驾护航。ssl协议就是基于这样的工作背景开发的,它能使用户跟服务器应用之间的通信不被攻击者窃听…

    2025年4月2日 编程技术
    200
  • 芝麻交易所gate网页版进入 芝麻gate交易所官方网页版点击进入

    芝麻交易所Gate.io网页版登录便捷,只需在浏览器地址栏输入“gate.io”并回车即可访问官方网站。简洁的主页提供清晰的“登录”和“注册”选项,用户可根据自身情况选择登录已注册账户或注册新账户。注册或登录后,即可进入交易主界面,进行加密…

    2025年4月2日
    100
  • 关于openssl ca的详细介绍

            关于证书授权中心CA以及数字证书等概念,请移步 OpenSSL 与 SSL 数字证书概念贴 。 openssl是一个开源程序的套件、这个套件有三个部分组成:一是libcryto,这是一个具有通用功能的加密库,里面实现了众多的…

    编程技术 2025年3月31日
    200
  • 伪命令req功能的详细介绍

            伪命令req大致有3个功能:生成证书请求文件、验证证书请求文件和创建根ca。由于openssl req命令选项较多,所以先各举几个例子,再集中给出openssl req的选项说明。 首先说明下生成证书请求需要什么:申请者需要…

    2025年3月31日
    100
  • 如何保护Word文档?加密技巧大揭秘

    在当今信息时代,word文档已成为人们工作生活中不可或缺的一部分,因此文档的保护显得尤为重要。不仅要保护文档内容的完整性和保密性,还要避免文档被恶意篡改或泄露。本文将介绍一些保护word文档的加密技巧,帮助您更好地保护重要文档。 一、设置密…

    互联网 2025年3月10日
    200
  • Word文档加密步骤全解析

    在当今信息爆炸的时代,人们在处理数据和文件时,往往会遇到隐私保护的问题。在工作中,有时候需要将一些敏感的文件或者个人文件存储在电脑中,这就需要一种有效的方式来保护这些文件,以免被他人非法获取。而word文档是我们在日常工作中使用最为频繁的一…

    互联网 2025年3月10日
    300
  • 完全掌握Word文档加密技巧

    word文档是我们日常工作和学习中经常使用的一种文件格式,有时候我们需要对文档进行加密以保护其中的内容不被未经授权的人查看或修改。今天我们就来探讨一下如何完全掌握word文档加密技巧,让你的文件更加安全。 一、Word文档加密的重要性首先,…

    互联网 2025年3月10日
    400
  • 保障隐私:Word文档加密操作指南

    保障隐私:word文档加密操作指南 在信息科技高度发达的今天,我们的个人信息、商业机密等重要数据往往以电子形式保存在各种文档中。为了确保这些信息不被未授权者窥视,保护个人隐私和保密信息的安全,加密已成为一种重要的手段之一。本文将介绍如何在常…

    互联网 2025年3月10日
    200
  • Word文档加密方法详解

    在当今信息技术高度发达的时代,保护个人和机密数据的安全至关重要。在日常工作和学习中,我们经常需要使用word文档来存储和处理各种重要信息。为了防止这些文档被未经授权的人查看或篡改, word文档的加密就显得尤为重要。本文将详细介绍word文…

    互联网 2025年3月10日
    300

发表回复

登录后才能评论