openssl数据加密

一、openssl简介

openssl是最著名的开源SSL,其用 C 实现,被广泛应用在基于TCP/Socket的网络程序中。

OpenSSL:开源项目

三个组件:
openssl: 多用途的命令行工具,包openssl
libcrypto: 加密算法库,包openssl-libs
libssl:加密模块应用库,实现了ssl及tls,包nss

1、SSL(Secure Sockets Layer,*接层)是一个安全协议,为基于TCP的应用层提供安全链接,如https。其目标是保证两个应用间通信的保密性和可靠性,可在服务器端和用户端同时实现支持。目前,利用公开密钥技术的SSL协议,已成为Internet上保密通讯的工业标准。SSL协议被广泛应用于电子商务、网上银行等领域,为网络上数据的传输提供安全性保障。

SSL协议位于TCP 协议层和应用层之间(即在会话层或表示层),当数据经过它流出的时候被加密,再往TCP/IP 送,而数据从TCP/IP  流入之后先进入它这一层被解密,同时它也能够验证网络链接两端的身份。

通过SSL可以实现:

连接的私密性:在SSL 握手阶段生成密钥后,用对称加密算法对传输数据进行加密。
身份认证:对服务器和客户端进行基于证书的身份认证,其中客户端认证是可选的。
连接的可靠性:消息传输过程中使用基于密钥的MAC(Message Authentication Code,消息验证码)来检验消息的完整性。

2、TLS(Transport Layer Security)

1994年,NetScape公司设计了SSL协议(Secure Sockets Layer)的1.0版,但是未发布。
1995年,NetScape公司发布SSL 2.0版,很快发现有严重漏洞。
1996年,SSL 3.0版问世,得到大规模应用。
1999年,互联网标准化组织ISOC接替NetScape公司,发布了SSL的升级版TLS 1.0版。
2006年和2008年,TLS进行了两次升级,分别为TLS 1.1版和TLS 1.2版。最新的变动是2011年TLS 1.2(目前使用最多的)的修订版

SSL、TLS功能:机密性,认证,完整性,重放保护(重放的意思是,拒绝相同的包,避免重放攻击)

3、基本的运行过程

SSL/TLS协议的基本思路是采用公钥加密法,也就是说,客户端先向服务器端索要公钥,然后用公钥加密信息,服务器收到密文后,用自己的私钥解密。这时client端已经拿到公钥了,由于非对称加密算法在解密的过程中,耗时巨大,所以通过非对称秘钥来加密传输的数据显然不合逻辑,所以就有了这种方法–通过非对称秘钥来加密对称加密的秘钥(数据量小,不会产生耗时巨大的弊端),以确保双方协商传输的对称秘钥不会被篡改,真正的数据传输,实际用的是对称加密的方法。

但是如果要保证server向client端传输的公钥不被篡改,则需要用证书对公钥进行签名,如果证书是可信的,那么公钥就是可信的。

SSL/TLS协议的基本过程是这样的:

(1) 客户端向服务器端索要并验证公钥。(明文传输,可以被篡改,需要证书来验证公钥的来源是否正确)
(2) 双方协商生成”对话密钥”。
(3) 双方采用”对话密钥”进行加密通信。

4、握手阶段的详细过程( Handshake协议)

1)、客户端请求建立SSL链接,并向服务端发送一个随机数–Client random和客户端支持的加密方法,比如RSA公钥加密,此时是明文传输。
2)、服务端回复一种客户端支持的加密方法、一个随机数–Server random、授信的服务器证书和非对称加密的公钥。 (如果客户端不支持服务器端的算法,服务器端将关闭连接)
3)、客户端收到服务端的回复后利用服务端的公钥,加上新的随机数–Premaster secret 通过服务端下发的公钥及加密方法进行加密,发送给服务器。
4)、服务端收到客户端的回复,利用已知的加解密方式进行解密,同时利用Client random、Server random和Premaster secret通过一定的算法生成HTTP链接数据传输的对称加密key – session key。(DH  Deffie-Hellman)

经过这4个阶段之后,整个握手阶段全部结束。接下来,客户端与服务器进入加密通信,使用的就是普通的HTTP协议,只不过用对称秘钥加密内容。

二、openssl的基本应用

openssl的基本应用有:对称加密、 单向加密、生成用户密码、生成随机数、对称加密

1、openssl的对称加密:

  1. [[email protected] app]# ls
  2. fist_encrypt
  3. [[email protected] app]# openssl enc -e -des3 -a -salt -in fist_encrypt -out fist_encrypt.des3
  4. enter des-ede3-cbc encryption password:
  5. Verifying - enter des-ede3-cbc encryption password:
  6. enc :表示对称加密
  7. -e :表示要执行的动作是加密 相反的 -d表示解密
  8. -des3: 表示钥使用的算法是des3
  9. -a : 表示base64编码(base64:A-Za-z0-9+/,这些组合在一起,总共64个)
  10. -salt : 表示加盐,默认就表示加盐
  11. -in : 表示输入,我们选择的是fist_encrypt这个文件
  12. -out : 表示输出,我们将新生成的文件命名为fist_encrypt.des3
  1. [[email protected] app]# openssl enc -d -des3 -a -salt -in fist.des3 -out new_file #解密的参数与加密的参数要对应好
  2. enter des-ede3-cbc decryption password:

可以通过“man enc”来查看对称加密的各种选项和算法

2、单向加密

  1. [[email protected] app]# openssl dgst -md5 -hex fist.des3
  2. MD5(fist.des3)= bd7c8c96452aff39b63049cd0696b47d
  3. [[email protected] app]# openssl dgst -sha1 fist.des3
  4. SHA1(fist.des3)= 0d1b1a6594ba7ff72e78558eb55fe5c5877bcda2
  5. dgst:表示单项加密
  6. -md5、-sha1 :表示算法
  7. -hex :表示已16进制的格式输出; dgst支持很多种格式输出,可以通过man dgst来查看
  8. 以上的命令相当于
  9. md5sum fist.des3
  10. sha1sum fist.des3

可以通过man dgst来查看openssl所支持的选项和其所支持的算法,直接man openssl是查不到的。

3、生成密码

  1. [[email protected] app]# openssl passwd -1
  2. Password:
  3. Verifying - Password:
  4. $1$oWzC5Ru.$XVxqgrenwYJ.g8xbnnoWz0
  5. passwd:表示生成密码
  6. -1:表示使用md5算法
  7. -salt:表示加盐,也可以自己指定,如: -salt "dddeeeed" (字符串最多8位) 上述操作,我们并没有指定 -salt选项,该选项为系统默认添加。上述“$1$oWzC5Ru.$”表示盐的部分
  8. 我们通常会用这个命令来生成用户的口令加密串,其格式和/etc/shadow 下的第二个字段格式完全一样。

4、生成随机数

  1. [[email protected] app]# openssl rand -base64 20
  2. EDQIGyLyswYmbjCoYmylb3RcPmE=
  3. [[email protected] app]# openssl rand -base64 22
  4. HzFIds+ni82PiTd5Zw6gsJGBVFx/Vw==
  5. [[email protected] app]# openssl rand -hex 22
  6. 7c9f9f457e6641e3c093acff40bc8eac7c56d2c371bf
  7. [[email protected] app]#
  8. rand : 表示生成随机数
  9. 20、22:表示生成的位数
  10. -base64:表示以base64的格式输出
  11. -hex: 便送hi以十六进制的格式输出

5、非对称秘钥加密

首先说几个算法:

RSA:支持公钥和数字签名的加密,密钥交换
ELGamal:支持公钥和数字签名的加密
DSA:支持数字签名,和密钥交换
DSS :支持密钥交换
dh:对称密钥交换

下面我们使用openssl生成私钥:

  1. [[email protected] app]# openssl genrsa -out private_key
  2. Generating RSA private key, 2048 bit long modulus
  3. ......................+++
  4. .......+++
  5. e is 65537 (0x10001)
  6. genrsa :表示生成rsa
  7. -out :输出文件名
  8. 生成的默认位数为2048位,可以手工指定
  9. 使用rsa算法生成private_key
  10. 下面我们查看一下生成的key的内容
  11. [[email protected] app]# ls
  12. fist.des3 fist_encrypt new_file private_key
  13. [[email protected] app]# ll
  14. 总用量 16
  15. -rw-r--r--. 1 root root 57 1月 7 21:21 fist.des3
  16. -rw-r--r--. 1 root root 16 1月 6 19:44 fist_encrypt
  17. -rw-r--r--. 1 root root 16 1月 7 21:21 new_file
  18. -rw-r--r--. 1 root root 1679 1月 7 22:40 private_key
  19. [[email protected] app]# cat private_key
  20. -----BEGIN RSA PRIVATE KEY-----
  21. MIIEpgIBAAKCAQEA3u6Q9YvkvAM0NZfZQb7NO3Mb8aw2Y0rNZtTA2tQ1Az90TM2r
  22. cu1QFfLeKphf1YUo2Lxq7SFHT07SCcdhzJolzzWGr+QjI8g5LAcWFYDFKj34lb+D
  23. Ps+LziqGoh8txsLzP1kitzVeuXB7ZMYlwRu0eJoOUeGdg3YXKNksDjgaQwS0+4vE
  24. xvu5xpVKTcpMwyHWAslb/LbNeR/x+M7m5nYZ7yPQ88CK+a2vmP/XOA53ezKOIDPc
  25. roT8jCTNYRJFhKjywyCi4tTFwtFBdoEubBoNH6Km+AiQ7oANf6vYKWQONn6Xid0u
  26. DIE2XUQ6V3bfgfRZAHWfEntToE/A4EuN5PopVQIDAQABAoIBAQCkKYFNkAqL+MAF
  27. hyBRLbPrx0QYnvwd+gNvadPqUMII9j0qIXnTU7XZs9KuAy7vCPOfRoBmxk7AtAYv
  28. dUcrZ4fYIk5gT9sgilyvczhr9Ts7dA8OFs0K/8KvutkRoWwQJZcCWx0ZVI/Adngn
  29. KVK79S7ccHWDDmTzXY6IYgPzJJUSK5FTtdhTsUetKSZZBwlrfq/2WmmqDbuGFU0H
  30. jxz4POT9n41nfuTZ8UmUkLmAWMnOi+3sDk/VC0uLDBMWwX26Sj1ngyBDOAZCCamm
  31. jOY2opEqQWrBMfXPMbZ1OrxaQ37EHRJkNqOlXOG/JB02Zw24i+Ac7qEduqL9Ye/J
  32. x7hQhc4xAoGBAO874TIFvxA4R2K+lintbcFKJyX7kzpHSclyCkWkymp8i5cSiaUr
  33. Yl/rYdNKJSWnId2dTvfZJ9dcw1GCMR/mEAE6stWNqVLySG8Izn00hogzu+ucokJC
  34. 2jFiRbNO9OyGrGOOzpuqpigOblwVCmLnELJeyVgsbDnaiwdgVpsnKXTjAoGBAO6O
  35. NeoPde8jqAAeZjhAfr2iqPVUCt5PDMd4CrC0+5ZaqEsoFRLeiUASpaScUIO3Y9IZ
  36. oN5HxzETgHj9ultuODtMzWnTwdYwzYHyLBQjxnykVtLErnnzLXqko4U40HnkzedV
  37. QDk+ZZ3kiubW7hEdX7uMcKRy3ZgmM3/qIuVqPvZnAoGBALU3+sJVsAGtYAXgsQdZ
  38. n0ZH0ZfoFgKTdcVu6XEP/3Tim

同样的可以通过man genrsa 来查看生成rsa的参数

因为私钥是一个很重要的文件,是绝对不允许泄露的,所以我们可以对访问的私钥加密,并设定权限,看如下操作

  1. [[email protected] app]# (umask 066;openssl genrsa -out private_key.tmp -des3 2048)
  2. Generating RSA private key, 2048 bit long modulus
  3. ......................................................................+++
  4. .........................+++
  5. e is 65537 (0x10001)
  6. Enter pass phrase for private_key.tmp:
  7. Verifying - Enter pass phrase for private_key.tmp:
  8. [[email protected] app]#
  9. ():表示在子shell中执行,不会影响当前环境,umask设定权限为066,创建文件时只有属主有读写权限
  10. -des3 :表示对生成的私钥进行对称加密, 使用了该选项,当调用私钥时需要输入密码才可以访问。
  11. 2048 表示生成的位数
  12. <br >我们查看一下私钥文件</br >
  13. [[email protected] app]# cat private_key.tmp
  14. -----BEGIN RSA PRIVATE KEY-----
  15. Proc-Type: 4,ENCRYPTED
  16. DEK-Info: DES-EDE3-CBC,99D59E1B7B7E32C0
  17. jtPJ1f6naRCo3b0MybmUW0QrIMlh3rsnqX7429S3WaunFVERpIjfnxMERJ9pdqEL
  18. cbhh5w1ReUJfVsv9VBWffqKfQfiwklNIXvkE7W++K7bLT/LE6Q8Is0JKPciv7/NI
  19. sh/fCYEKsTmQxnnQY0U6wOg4jobBiK9iLO4gfhDhiVsWeKh1RlzxamOHYlMNFXog
  20. Eyl5KL4dfmHpVhDAOhSWVa/wr4dEjNANZ7+eMKP13T93fXUR1EMmPR4hneEMkiKs
  21. k0/7UouMgpe/pRpCJ04TD27ljGmN+IC7GEvannOiub6t73yH8qq9hTBr0g/qaAEi
  22. qSk3ecGX3zWQaGdrdI1Hjk+EgUaFr41FWP9fIixRPIgj+SzmTn8JNxWBrYRjPIgH
  23. v+3TqMvgP0sE9SCPxX+RqAq7+CK/+tBodNl1Hoj7DVT0bVfhielJtCh+HbOPQy1x
  24. CE9knOrJvPA+Q617aBRxnMRdO0ppLd1HMC1EJVst6tPfjJa+U7FCH6CcrvaT8IhJ
  25. Fd8Xd7gPYrJi6HHYXB1vWCKCRXHXLaAUqdsFasGL19sUI+T05jR8GimsI3ZRuBSt
  26. z/XkUuLFTAeRiz6bQOapWq7sCqOpSGFgi7QQbPy9gS4j9tAGVQCMYxupzWI7bJQV
  27. L6qoBe+qsHzjTPPihwIKJj1zIsVq5s3dm3ZMZv8D4sESJxKrtVT63bLLPp5juX2Q
  28. 1sqHr6wHqmQkqYSJ/fKZSG81FqV258tcCDvCkoc1EiV7FtRgwSz9gqaIZxx0EYVH
  29. W7kKyeL6iEGni6PB/LjZB5lGy/g1i6dggruk9VQ0sUyXmImvkYcdPMfl9sZg7QrL
  30. U16hUVRpGcH7pgelsyrJVUCAxkB7Q4Z78kVWesA02kzeAI0wdaebCYHYLOBFFxRF
  31. HAzTxYLal8CAXZ1gVihqOgjy1PlOHtB/cu+fDJLEJIiYMzGWd2LsgRd6kJqfwF1w
  32. s4xPJ6Lmzi816uLBvH01tXTqav4E/K8XQdBSMRHXPptwVE5nbu7XRNaCEpsNq6JP
  33. KY0uBfdkJj6ETZl/a/x1/LC0mYOB1I5IEinLy4vl0aGtBkIvzDqdNjt036stjFv5
  34. 0TVuka6WodxlJe57plfEg6gj+csBOPjn4IIs4Nc2qFESNFqQfFjmiPSLIh/gRe8+
  35. Lt7puWyohob//bP00Zq+xhFVMSRptQxAdQFWGRoxwv0ByfA2fWBjNAOA/UsYUj1X
  36. UZJFMfBCVKl6Q+4WL+lXyJmICKxVCgZMRCunk8Ydw9cQq4w5WJKZ/BnC9KAdPUWH
  37. DaLtjcIQUV3pEt2ippBj3YS17OFG5r/2NywAkT3YV6/WUo6bx/+vMl79Ld+1wPwS
  38. tZqtbLUSiGDnvN8kxU/XQWUdQXPdS0hwNZzSCwQZb+Llqp8iLc76xmQhE1aJ7Y0d
  39. w4pNSOKxQez48vZfQ8G/R+neu5gJydo5dMpLnuIbv4wfm2mzPO22wgESSsSJMj9C
  40. ZggZlHiOj3FXkp+pTThWu3aPi8gIPkjChoE5lGMz8xssaXg8ctBV4c4T1t5ZfzHZ
  41. xsQZV7TbIWOaglO/+fOof1xevkm7zXWWHfyYs6SZ/sI5lWf1N1MMqNdPr20Mr7p8
  42. -----END RSA PRIVATE KEY-----
  43. DEK-Info: DES-EDE3-CBC,99D59E1B7B7E32C0 这里显示私钥加过密,使用的是des3算法

从一个加过密的私钥中导出私钥

  1. [[email protected] app]# openssl rsa -in private_key.tmp -out ok.tmp
  2. Enter pass phrase for private_key.tmp:
  3. writing RSA key
  4. [[email protected] app]#
  5. 我们查看一下新生成文件
  6. [[email protected] app]# cat ok.tmp
  7. -----BEGIN RSA PRIVATE KEY-----
  8. MIIEpQIBAAKCAQEA6QT8W214GlEmNwBnre9rnN5xVzjCnnBNO5rBxEiQUdzB5Gub
  9. Wuav2KYq5jC/5SBDSV0iRBHVOH+TTc7n4X3b470SER1kzki+3yPw00803xGeTWn7
  10. OeblPoejq4lzz+m4azFvVmbeWuyeoClh7S+qNcK1TNdd1u4GJr2BAcLEJbJzQoXo
  11. Fo+DdF7YE6vHnA/uSkkJFXsllslz8v6CVec88OFika78eNmqVW+DAUd2K5XQExaT
  12. jw+QpMzqgTZB+alXixmsUnEPjwEFKizKAsN3zpoeN+80mHONvHK/j5wMO/1U/WE+
  13. kWFMjBuoamD79vwZ1v0IKulMVg6ulyULZbA0JwIDAQABAoIBAChSyYzUw7ziIBfS
  14. hR6PWPL7d2edlegvDN5sqG1cFUVlS1RI3sh7NSDrmG7fLsXqsFoouL5Iy7oMMaR8
  15. Upot2nhthovZp1EfO5CHuqwGf+K+PMOuvF/HuhH5DPSpQ5ZOHrDGDDtKb94SJl0W
  16. 7DBMWEsXV6JlfoKsC/p2PrXcS28uPsFCNvmLcwxWfx/UpGLS07b0Wq3MB6plnPIh
  17. Ot+miuZyDwmaMar4jZUMQ9gSEznTExejeXI3c0tnLo5dvf/jO2gLMrYMo4p41SJt
  18. 6sCn0R/j4ZZmc0G5u6m3+Gas0G0JKCADmh++Yyoo6s9l/aRdKc/wF7KrQbnMfxI+
  19. p1rF4jECgYEA+VIL3+dbOiLq8ymXegUpSfKrOaII4//bWlZ+iLSoY+/8l6FTTfm0
  20. HfGnQcHSzLymGz5yyHk7IQjFlnQxXDA8e253rqz9wETeo2cX3xa0hZcjOS7w9p8t
  21. mPDkKLnZZd8p3kwli9DVZoUFnpd5wLsg6FdaXIh3tAuExNkxQ8K8cO8CgYEA70Mj
  22. uvH0R1YofXSAg1M+taNY4Xu8tsddiPg1u4jKIgzEnYedRcbmsVnJLsxV3ZoLP0y3
  23. F13Fry2i1Zt4avP+HDZ83SK49OHiSJZXRy/9esoqfzmGLylxt2i331jtT3uOqFlX
  24. GUVPIlpVVWngMA1cPTBoDoJvsJna6GS6QBlMAEkCgYEAh4zK9fXEDIyVbpTLTUTn
  25. GNQ9sXzeFo+xg6EI9Gw8LPF6RDoqn3dGLQ2IIOEvKa7bJG7EWyhGNISfYFhVychT
  26. 6cu6eBaHc3Q+E1rmiJzAku0D8oAJ9BvA36kAcv/wKUm2aqy9sRFeJHnn/zxdrqJO
  27. luN/NlXfttyYV6m59hw29bMCgYEAluX8QepZSyh+rujsKGc3FK2p38P/eDNyvXD1
  28. yonyGdl9o3Clcx2H33CmHrrGqNV/pHOIwdblV59rpFbCconhyP9gbsN4bRGNeoQ/
  29. FWmh73BTrxujklkMHEWSOe3G9asShQCbmxeIWj0oto7o0sWKWBkQd54yPOo8Evd8
  30. M/MAaOkCgYEA2e6hfcZqc6TPummLniUK5meT0xZbcth+Cf04XLyWP03wLl2MecKH
  31. HiiOyo+XJxH3fEAh0Wv4PPSOAdKMCU/beT5fOHsSInoP3gpFIofvl4p21YiRCPk1
  32. ARfAM6FKZ9/8WnNpdJhipt+0huS+p82tUMjX4cdOJdTm5w7iOO3npck=
  33. -----END RSA PRIVATE KEY-----
  34. 已经成功导出

从私钥中提取出公钥

    1. [[email protected] app]# openssl rsa -in private_key -pubout -out pub_key
    2. writing RSA key
    3. [[email protected] app]# ls
    4. fist.des3 fist_encrypt new_file private_key private_key.tmp pub_key
    5. [[email protected] app]# cat pub_key
    6. -----BEGIN PUBLIC KEY-----
    7. MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3u6Q9YvkvAM0NZfZQb7N
    8. O3Mb8aw2Y0rNZtTA2tQ1Az90TM2rcu1QFfLeKphf1YUo2Lxq7SFHT07SCcdhzJol
    9. zzWGr+QjI8g5LAcWFYDFKj34lb+DPs+LziqGoh8txsLzP1kitzVeuXB7ZMYlwRu0
    10. eJoOUeGdg3YXKNksDjgaQwS0+4vExvu5xpVKTcpMwyHWAslb/LbNeR/x+M7m5nYZ
    11. 7yPQ88CK+a2vmP/XOA53ezKOIDPcroT8jCTNYRJFhKjywyCi4tTFwtFBdoEubBoN
    12. H6Km+AiQ7oANf6vYKWQONn6Xid0uDIE2XUQ6V3bfgfRZAHWfEntToE/A4EuN5Pop
    13. VQIDAQAB
    14. -----END PUBLIC KEY-----
    15. [[email protected] app]#
    16. 注意:生成私钥使用的是 genrsa,而提取操作使用的是rsa
    17. -pubout :表示导出公钥 (必须加该选项,否则导出的是一个原本的私钥而不是公钥)
    18. in: 指定私钥
    19. out:输出公钥的文件名

原文地址:https://www.cnblogs.com/momenglin/p/8485996.html

时间: 2024-10-19 15:01:41

openssl数据加密的相关文章

OpenSSL - 数据加密和数字证书

功能应用: 消息摘要,给文件或数据生成消息摘要,消息摘要只能校验数据的完整性,如SHA.MD5 数据加密和解密:对数据进行加密解密,OpenSSL实现了所有加密算法 数字证书:可以通过命令行或代码生成证书,证书内包含了公钥 数字签名:利用加密算法对数据进行签名,验证数据来源可靠性,如RSA 随机数字:产生可靠的随机数 加密算法: HASH算法:SHA.MD5等,不可逆加密,用于校验数据的完整性. 对称加密算法:DES.3DES.DESX等,双方使用相同的密钥进行加密解密. 非对称算法:RSA.E

PHP 官方发行版扩展下载地址

PHP扩展下载 稳定发行版资源下载地址: https://windows.php.net/downloads/pecl/releases/ 常用扩展: 持续更新中 ... igbinary 序列化/反序列化 加强版扩展 Redis 扩展 mbstring 扩展 exif 扩展(操作图片元信息),该扩展需要先安装mbstring扩展 curl 扩展 opcache 扩展,缓存PHP预编码code,当然再实际开发中该扩展需要关闭,不然改动了代码没法立刻更新 xdebug 扩展 openssl 数据加

数据加密openssl&openssh

数据加密特性:机密性.完整性与身份认证. 常见的加密算法 对称加密 在对称加密算法在加密与解密过程中都使用同一密钥,不能有有效管理密钥. 对称加密算法有:DES:3DES:AES:Advanced:AES192 AES256 AES512:OpenSSL:gpg 单向加密 能够有效保证数据的完整性,单向加密算法,提取特征码:输入一样,输出必然一样:雪崩效应:输入的微小改变,会引起结果的巨大改变:定长输出,无论原始数据有多大,结果大小相同:具有不可逆,无法根据特征码来还原原来的数据.md4;md5

数据加密和OpenSSL

数据加密: SSL: Secure Socket Layer安全的套接字层 Openssl:ssl在Linux上实现的一个软件,开源的 例:使用了ssl协议就不在是原来的协议了 http(80) --> ssl --> https (443) NIST定义数据安全性的基本法则: 保密性: 数据保密性 隐私性 完整性: 数据完整性 系统完整性 可用性: 安全攻击: 被动攻击:监听 主动攻击:伪装.重放.消息篡改.拒绝服务 安全机制: 加密/解密.数字签名.访问控制.数据完整性.认证交换.流量填充

使用openssl库实现RSA、AES数据加密

使用openssl库实现RSA.AES数据加密 openssl是可以很方便加密解密的库,可以使用它来对需要在网络中传输的数据加密.可以使用非对称加密:公钥加密,私钥解密.openssl提供了对RSA的支持,但RSA存在计算效率低的问题,所以一般的做法是使用对称密钥加密数据,然后再把这个只在当前有效的临时生成的对称密钥用非对称密钥的公钥加密之后传递给目标方,目标方使用约定好的非对称密钥中的私钥解开,得到数据加密的密钥,再进行数据解密,得到数据,这种使用方式很常见,可以认为是对HTTPS的裁剪.对称

使用OpenSSL进行数据加密

0x01 OpenSSL的基本概念 OpenSSL是为网络通信提供安全性和数据完整性功能的一种协议,其中包括囊括了主要的密码算法.常用的密钥和证书封装管理功能以及SSL协议. 0x02 加密和解密的基本概念 这里说一下加密和解密的过程:       文件加密 :原始数据 -> 单向加密提取特征码 -> 使用私钥加密特征码并附加于原始数据中 -> 使用对称加密算法加密全部数据 -> 使用解密者的公钥加密 密码附加于已加密的数据中             文件解密:使用自己的私钥解密对

php使用openssl进行Rsa长数据加密(117)解密(128) 和 DES 加密解密

PHP使用openssl进行Rsa加密,如果要加密的明文太长则会出错,解决方法:加密的时候117个字符加密一次,然后把所有的密文拼接成一个密文:解密的时候需要128个字符解密一下,然后拼接成数据. 加密: /** * 加密 * @param $originalData * @return string|void */ /*function encrypt($originalData){ // if (openssl_private_encrypt($originalData, $encryptD

Openssl及加密解密(一)数据加密解密及CA原理

明文:plaintxt或者cleartext,也就是没有加密的,直接可以看懂的内容.密文就是通过特殊方式处理过的内容,无法直接看懂. 常见的加密方式: 对称加密 公钥加密 单向加密 对称加密: 加密算法+口令,把要转换的数据也就是明文数据,通过加密算法内部转换明文变成密文.这个算法可能是公开的,但口令只有你自己知道.为了更加安全,那么加密本身不能过于依赖算法,因为算法固定而且一旦算法遭到破解,那么基于这个算法的所有密文都可以破解,所以算法固然重要,但是最重要的是口令,口令可以变,就算算法破解了,

openssl基础

OpenSSL 是一个安全套接字层密码库,囊括主要的密码算法.常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用. OpenSSL is an open source project that provides a robust, commercial-grade, and full-featured toolkit for the Transport Layer Security (TLS) and Secure Sockets Layer (SSL) prot