编程语言PHP中OpenSSL加密问题整理_php技巧

本文分享了在PHP开发中遇到的OpenSSL加密问题,特别是在PHP7环境下,如何将openssl_get_privatekey方法替换为openssl_pkey_get_private,并解决了秘钥格式在不同操作系统间的不兼容问题。提供了解决秘钥格式转换和添加头尾的方法,帮助开发者解决PHP与Java接口验证时的加密难题。
摘要由CSDN通过智能技术生成

编程语言PHP中OpenSSL加密问题整理_php技巧

本篇文章主要给大家讲解了PHP中OpenSSL加密遇到的问题整理以及相关的处理办法,在实际PHP开发中加密是很常见的,对PHP中加密感兴趣的可以一起参考学习下。

最近公司项目中有需要用到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) {
    if ($isPublic) {
      return "-----BEGIN PUBLIC KEY-----\n" . $content . "\n-----END PUBLIC KEY-----\n";
    }
    else {
      return "-----BEGIN PRIVATE KEY-----\n" . $content . "\n-----END PRIVATE KEY-----\n";
    }
  }

以上就是本次遇到OPENSSL加密问题的小经验,大家还有问题的话在下方留言讨论吧。

相关推荐:

PHP 7.1中利用OpenSSL代替Mcrypt加解密的方法详解_php技巧

有关php如何利用openssl加密解密实例详解

php 以openssl为基础实现的的加密解密方法

以上就是PHP中OpenSSL加密问题整理_php技巧的详细内容,更多请关注php中文网其它相关文章!

文章来源:https://www.php.cn/faq/382567.html

阿哇教育
www.awaedu.com
作文哥
www.zuowenge.cn
搜码吧
www.somanba.cn
教程弟
www.jcdi.cn
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PHP ,可以使用 `setcookie` 函数来设置 cookie。但是,如果希望对 cookie 进行加密,可以在设置 cookie 时,先对需要保存的数据进行加密,然后再将加密后的数据保存到 cookie 。 以下是一个使用 PHP 对 cookie 进行加密的示例: ```php // 加密函数 function encrypt($data, $key) { $iv = random_bytes(16); $encrypted = openssl_encrypt($data, 'AES-256-CBC', $key, OPENSSL_RAW_DATA, $iv); return base64_encode($encrypted) . ':' . base64_encode($iv); } // 解密函数 function decrypt($data, $key) { list($encrypted, $iv) = explode(':', $data, 2); $encrypted = base64_decode($encrypted); $iv = base64_decode($iv); return openssl_decrypt($encrypted, 'AES-256-CBC', $key, OPENSSL_RAW_DATA, $iv); } // 设置加密后的 cookie $key = 'my_secret_key'; // 定义一个密钥 $data = 'hello world'; // 需要保存的数据 $encrypted_data = encrypt($data, $key); // 对数据进行加密 setcookie('my_cookie', $encrypted_data, time()+3600); // 设置 cookie // 读取加密后的 cookie if (isset($_COOKIE['my_cookie'])) { $encrypted_data = $_COOKIE['my_cookie']; $data = decrypt($encrypted_data, $key); // 对数据进行解密 echo $data; // 输出解密后的数据 } ``` 上述示例,使用了 `openssl_encrypt` 和 `openssl_decrypt` 函数来进行加密和解密。需要注意的是,这两个函数需要开启 OpenSSL 扩展。同时,为了保证加密的安全性,应该使用一个随机生成的 IV(初始化向量)来进行加密
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值