PHP的OpenSSL加密扩展学习(一):对称加密 我们已经学过不少 PHP 中加密扩展相关的内容了。而今天开始,我们要学习的则是重点中的重点,那就是 OpenSSL 加密扩展的使用。...一是 OpenSSL 是目前 PHP 甚至是整个开发圈中的数据加密事实标准,包括 HTTPS/SSL 在内的加密都是它的实际应用,二是 OpenSSL 提供了对称和非对称加密的形式,也就是我们日常中最普遍的两种加密方式...OpenSSL 扩展的对称加密 好了,介绍这么多理论知识,接下来还是回归正题了,我们在 PHP 中如何实现对称和非对称加密呢?非常简单,使用 OpenSSL 扩展就可以了。...对称加/解密实现 $data = '测试对称加密'; $key = '加密用的key'; $algorithm = 'DES-EDE-CFB'; $ivlen = openssl_cipher_iv_length...总结 这篇文章的内容有比较多的理论相关的知识,大家还是要多多地消化。使用 OpenSSL 实现加/解密的功能其实还是比较简单的,毕竟东西都已经帮我们封装好了,我们只需要按照文档来调用函数就可以了。
最近公司项目中有需要用到OpenSSL的加密和java端进行接口验证,再测试环境升级到PHP7的时候加密会出现错误,后来多方面检查终于找到原因所在: PHP7环境下把openssl_get_privatekey...方法换成openssl_pkey_get_private 需要转换一下秘钥,window环境和Linux环境下的秘钥格式有区别(暂时不确定是不是操作系统的关系) PHP的秘钥验证需要加上头尾。...这里贴上附属方法 转换秘钥格式的方法: function transJavaRsaKeyToPhpOpenSSL($content) { if ($content) { return trim(chunk_split...($content, 64, "n")); } return false; } 加头尾的方法: function appendFlags($content, $isPublic = true)..."n-----END PRIVATE KEY-----n"; } } 以上就是本次遇到OPENSSL加密问题的小经验,大家还有问题的话在下方留言讨论吧。
引言 互联网的发展史上,安全性一直是开发者们相当重视的一个主题,为了实现数据传输安全,我们需要保证:数据来源(非伪造请求)、数据完整性(没有被人修改过)、数据私密性(密文,无法直接读取)等。...虽然现在已经有SSL/TLS协议实现的HTTPS协议,但是因在客户端上依赖浏览器的正确实现,而且效率又很低,所以一般的敏感数据(如交易支付信息等)还是需要我们使用加密方法来手动加密。...PHP的openssl扩展 openssl扩展使用openssl加密扩展包,封装了多个用于加密解密相关的PHP函数,极大地方便了对数据的加密解密。...结语 密码学是一个十分高深的学科,它理论艰深,概念繁多,作为一个WEB开发人员,虽然不需要我们去研究其底层实现,但是学会使用封装好的方法很有利于我们开发。...甚至了解其基本实现,也可以触类旁通,对算法等有新的理解。
PHP的OpenSSL加密扩展学习(二):非对称加密 上篇文章,我们了解了关于对称和非对称加密的一些相关的理论知识,也学习了使用 OpenSSL 来进行对称加密的操作。...今天,我们就更进一步,学习 OpenSSL 中的非对称加密是如何实现的。 生成私钥 通过之前的学习,我们知道非对称加密是分别需要一个公钥和一个私钥的。...其实反过来也是可以的,OpenSSL 分别都为我们提供了公钥的加解密和私钥的加解密函数。 就像上篇文章的图示那样,对方获得我们的公钥,然后加密数据传输过来,我们通过自己的私钥解密数据获得原文。...https://www.php.net/manual/zh/function.openssl-pkey-export.php https://www.php.net/manual/zh/function.openssl-public-encrypt.php...https://www.php.net/manual/zh/function.openssl-private-decrypt.php https://www.php.net/manual/zh/function.openssl-sign.php
PHP的OpenSSL加密扩展学习(三):证书操作 关于对称和非对称的加密操作,我们已经学习完两篇文章的内容了,接下来,我们就继续学习关于证书的生成。...下面的 openssl_x509_verify() 是 PHP7.4 以后才支持的函数。 pkcs 证书操作 最后,我们来看一下 pkcs 签名证书。...本身加密这一块就是一门非常高深的学科,有兴趣的同学可以继续深入地研究。...测试代码: https://github.com/zhangyue0503/dev-blog/blob/master/php/202007/source/PHP%E7%9A%84OpenSSL%E5%8A...参考文档: https://www.php.net/manual/zh/book.openssl.php https://www.cnblogs.com/jinxiblog/p/7905315.html
php //加密 function encryption($str,$key = 'gV0iX9aD') { $iv = $key; $data = openssl_encrypt($str,"DES-CBC...",$key,OPENSSL_RAW_DATA,$iv); $data = strtolower(bin2hex($data)); return $data; } //解密 function...decryption($str,$key = 'gV0iX9aD') { $iv = $key; return openssl_decrypt (hex2bin($str), 'DES-CBC...', $key, OPENSSL_RAW_DATA,$iv); } $data = "123456"; $encryption = encryption($data); //加密字符串123456...$decryption = decryption($encryption); //解密 echo $encryption; //输出加密结果(df6dc44aa296d763) echo $decryption
简单定义:公钥和私钥,加密和解密使用的是两个不同的密钥,所以是非对称 系统:ubuntu 14.04 软件:openssl java php 生成公钥私钥 使用命令生成私钥: openssl genrsa...-out输出到文件 hello.de 输出的文件名 cat hello.de // taoshihan php加解密 $profile="taoshihan"; echo "加密前:{$profile...\n"; 新建rsa.php的文件 执行后结果: 加密前:taoshihan 加密后: ShjsdlTceurVfO0ocENqHGl9RXrQRm3vuprqchhuVOdX1ldJC2O2sIvjjpQfPWOkF1WA...,php使用私钥解密 shell: openssl rsautl -encrypt -in readme.txt -inkey rsa_public_key.pem -pubin|base64 加密后的字符串...,php解密: 拿上一步java生成的加密后字符串 <?
对称加解密算法中,当前最为安全的是 AES 加密算法(以前应该是是 DES 加密算法),PHP 提供了两个可以用于 AES 加密算法的函数簇:Mcrypt 和 OpenSSL。...其中 Mcrypt 在 PHP 7.1.0 中被 Deprecated,在 PHP 7.2.0 中被移除,所以即可起你应该使用 OpenSSL 来实现 AES 的数据加解密。...在一些场景下,我们不能保证两套通信系统都使用了相函数簇去实现加密算法,可能 siteA 使用了最新的 OpenSSL 来实现了 AES 加密,但作为第三方服务的 siteB 可能仍在使用 Mcrypt...下文中我们将分别使用 Mcrypt 和 OpenSSL 来实现 AES-128/192/256-CBC 加解密,二者同步加解密的要点为: 1、使用何种填充算法。...下面我们给出 PKCS7 填充算法 PHP 的实现: /** * PKCS7填充算法 * @param string $source * @return string */ function addPKCS7Padding
公钥数据加密 数字证书内包含了公钥,在进行会话连接时,双方交换各自的公钥,保留自己的私钥。进行数据传输时,利用对方的公钥进行数据加密。加密后的数据只有对方的私钥才能进行解密。...具体RSA加密算法在计算机网络中的运用方式和原理可以查看:OpenSSL - 网络安全之数据加密和数字证书 如何利用openssl命令行来生成证书和密钥可查看:OpenSSL - 利用OpenSSL自签证书和...在使用OpenSSL进行RSA加密算法时,流程与上述理论流程保持一致。...生成密钥或读取密钥 根据需要选择签名还是加密 使用公钥进行数据加密 使用私钥进行数字签名 数据通过网络进行安全传输 对端进行解密获取明文 下面是OpenSSL的RSA加密算法对数据进行加密解密过程实现...从证书中提取公钥加密与上述代码类似,替换相应API即可。 tips:本来把这篇OpenSSL的RSA加密算法和代码写好点的,但是由于最近时间越来越紧张。后续有机会在扩充吧。
且通信方如果比较多,秘钥过多,不便于管理,密钥传输和交换难以实现;因此产生了公钥加密(也叫非对称加密): 非对称式加密就是加密和解密所使用的不是同一个密钥,通常有两个密钥,称为"公钥"和"私钥",它们两个必需配对使用...用电子邮件的方式说明一下原理。 使用公钥与私钥的目的就是实现安全的电子邮件,必须实现如下目的: 1. 我发送给你的内容必须加密,在邮件的传输过程中不能被别人看到。...数字证书: 数字证书为实现双方安全通信提供了电子认证。在因特网、公司内部网或外部网中,使用数字证书实现身份识别和电子信息加密。...三、Openssl 基本使用方法 1、OpenSSL 是一个强大的安全套接字层密码库, 在应用层和传输层之间加了一个半层,基于套接字传输时专用的;所以不是对所有的数据进行加密;Appache使用它加密HTTPS...单项加密:openssl dgst 用于实现在网络通信中保证所传输的数据的完整性 -md5:用md5方式加密 -sha1:sha1
最近在使用rsa加密,字符串过长是总是自动截取,百度了发现是rsa对加密字符有长度的限制 写篇文章,省的以后再用时来回找 PHP使用openssl进行Rsa加密,如果要加密的明文太长则会出错,解决方法:...加密的时候117个字符加密一次,然后把所有的密文拼接成一个密文;解密的时候需要128个字符解密一下,然后拼接成数据 加密 /** * 加密 * @param $originalData...* @return string|void */ /*function encrypt($originalData){ // if (openssl_private_encrypt...($originalData, $encryptData, $this->rsaPrivateKey)) { if (openssl_public_encrypt($originalData...(base64_decode($encryptData), $decryptData, $this->rsaPublicKey)) { if (openssl_private_decrypt
加密解密文件。...# 加密 $ openssl enc -aes-128-cbc -e -a -in ~/.ssh/khs1994-robot -out ~/.ssh/khs1994-robot.enc -K c286696d887c9aa0611bbb3e2025a45a...-iv 562e17996d093d28ddb3ba695a2e6f00 # 解密 $ openssl enc -aes-128-cbc -d -a -in ~/.ssh/khs1994-robot.enc...-out ~/.ssh/id_rsa -K c286696d887c9aa0611bbb3e2025a45a -iv 562e17996d093d28ddb3ba695a2e6f00 -e 加密 -d...解密 -a 加密前/后使用 base64 编码 Key 和 IV 值是 16进制 More Information https://www.cnblogs.com/gordon0918/p/5317701
php 开启 openssl 的方法,大多数情况下 openssl 是没有开启的,要想启用需要进行下简单的设置 windows 下开启方法: 1: 首先检查 php.ini 中;extension=php_openssl.dll...Linux下开启方法: 我使用的是某云主机,PHP 版本:5.2.14 下面方案就以我的主机为例讲解为 PHP 添加openssl模块支持。...网上一些答案说要重新编译 PHP,添加 configure 参数,增加 openssl 的支持。这里讲一个不需要重新编译的方法。... 解压 tar zxvf php-5.2.14.tar.gz # 进入PHP的openssl扩展模块目录 cd php-5.2.14/ext/openssl/ /var/www/php5/bin/phpize...在此目录下把openssl.so 文件拷贝到你在php.ini 中指定的 extension_dir 下(在php.ini文件中查找:extension_dir =),我这里的目录是 var/www/php5
OpenSSL是一个开源项目,为传输层安全(TLS)和安全套接字(SSL)协议提供了比较完整的实现, 同时也致力于将自身打造为一个通用的密码学工具集....其中包括: libssl : 提供了SSL(包括SSLv3)和TLS的服务器端以及客户端的实现. libcrypto : 通用的密码学库以及对X.509的支持 openssl : 一个多功能的命令行工具...本文主要使用openssl的命令行工具来示例非对称加密的流程, 如果有兴趣的话,也可以用其SDK 来实现更具体的操作....因此对于大文件的加密传输, 通常还是使用对称加密的方式, 例如 openssl rand -base64 128 -out aeskey.txt openssl enc -aes-256-cbc -salt...当今我们使用最多的https本质上就是在http协议的基础上对传输内容进行了非对称的加密, 当然实现过程多了很多复杂的交互, 感兴趣的可以去查看SSL和TLS协议.
key 加密数据,返回原始或 base64 编码后的字符串。...参数 data 待加密的明文信息数据。 cipher_algo 密码学方式。openssl_get_cipher_methods() 可获取有效密码方式列表。...options options 是以下标记的按位或: OPENSSL_RAW_DATA 、 OPENSSL_ZERO_PADDING。 iv 非 NULL 的初始化向量。...返回值 成功时返回加密后的字符串, 或者在失败时返回 false。 PHP实现代码 php /** * Aes 对称加密 */ class Aes { const KEY = '123456'; const IV = ''; //IV参数必须是16位。
OpenSSL安装: 1.github下载最新的OpenSSL:https://github.com/openssl/openssl 2.在linux解压压缩包 3.安装OpenSSL 1 ....shared --prefix=/usr/local --openssldir=/usr/local/ssl 4 make clean 5 make && make install 4.用ln将需要的so...文件链接到/usr/lib或者/lib这两个默认的目录下面 1 ln -s /where/you/install/lib/*.so /usr/lib 2 sudo ldconfig openssl MD5...6 7 int MD5_Final(unsigned char *md, MD5_CTX *c); 8 //产生最终的MD5数据 9 10 unsigned char *MD5(const unsigned...char *d, size_t n, unsigned char *md); 11 //直接产生字符串的MD5 代码实现: 1 #include 2 #include <fstream
本文主要简单介绍下; 一、数据加密的三种方式; 二、Openssl的基础应用以及创建CA证书与发证; 一、数据加密的三种方式; 1、对称加密;加密与解密方使用同一个算法, 将数据切割成数据块逐步加密,并且前后块之间有关联关系...结合以上三种加密方法:如下图所示; 上图所示,把三种加密算法结合起来使用,对称加密实现了数据的机密性,公钥加密实现身份认证,而单向加密则实现了数据的完整性。...二、Openssl的基础应用以及创建CA证书与发证; 1)、Openss是一套用于SSL(安全套接字层)/TLS(传输层安全)协议的加密工具,有如下三个组件组成; 1、libcrypto;通用功能加密库...; 2、libssl;用于实现SSL/TLS的功能 3、多功能命令工具 其作用还可以生成密钥、创建数字证书、计算信息摘要、手动加密解密数据。...2)、对称加密以及解密的方法; 常用算法有:DES,3DES,AES,Blowfish,Twofish,RC6,CAST5 加密; openssl enc -des3 -a -salt -in /etc
1 #include 2 #include openssl/rsa.h> 3 #include openssl/pem.h> 4 #include openssl/err.h...> 5 6 //加密 7 int my_encrypt(const char *input, int input_len, char *output, int *output_len, const...n"); 93 } 94 fwrite(dst,1,dst_len,stdout); 95 return ret; 96 } 以上是一个示例,测试了私钥加密...(签名)/公钥解密(验证),main函数是一个测试 测试一下,先生成2048位公钥、私钥对 colin@colin-VirtualBox:/tmp$ openssl genrsa -out pri2048...7a71146998ad521bab336a49f65c90c4 data 7a71146998ad521bab336a49f65c90c4 data2 7a71146998ad521bab336a49f65c90c4 data3 公钥加密
因此,它们被称为“密钥对”,它们是相互关联的。 如何使用 OpenSSL 加密文件 OpenSSL 是一个了不起的工具,可以执行各种任务,例如加密文件。...她需要为该工具提供三个输入: 秘密消息文件的名称 Bob 的公钥(文件) 加密后新文件的名称 alice $ openssl rsautl -encrypt -inkey bob_public.pem...他需要向工具程序提供以下信息: 加密的文件(从 Alice 那里得到) Bob 的私钥(用于解密,因为文件是用 Bob 的公钥加密的) 通过重定向保存解密输出的文件名 bob $ openssl rsautl...的更多信息 OpenSSL 在加密界是真正的瑞士军刀。...除了加密文件外,它还可以执行许多任务,你可以通过访问 OpenSSL 文档页面来找到使用它的所有方式,包括手册的链接、 《OpenSSL Cookbook》、常见问题解答等。
需求背景 在linux上,需要对明文的备份文件(例如数据库的备份文件)进行加密存储。...备选方案 1、openssl+aes加密 2、gpg加密 出于最低成本考虑,最终选择了openssl+aes加密方式。...openssl+aes加密实操 加密方式如下: # 密码 encrypt_passwd="Abcd9876" # 原始文件 original_file="devops-dba-dump_2024-01...2、备份脚本里面,先执行请求backup-center,获取到当天使用的加密密码,用于当天的备份文件的加密。...因为如果对于一个大型的文件进行openssl加密的时候,因为使用的是命令行传参的方式,因此在shell终端通过ps -ef 可以看到openssl的秘钥内容。