`
hywoniu01
  • 浏览: 4503 次
文章分类
社区版块
存档分类
最新评论

PHP实现超简单的SSL加密解密、验证及签名的方法示例

 
阅读更多

本文主要介绍了PHP实现超简单的SSL加密解密、验证及签名的方法,结合实例形式分析了PHP基于openssl相关函数的签名、加密、解密、验证等操作技巧,需要的朋友可以参考下PHP源码,具体如下:

 

1. sign签名代码:

function sign($data) {
  //读取私钥文件
  $priKey = file_get_contents('key/rsa_private_key.pem');
  //转换为openssl密钥,必须是没有经过pkcs8转换的私钥
  $res = openssl_get_privatekey($priKey);
  //调用openssl内置签名方法,生成签名$sign
  openssl_sign($data, $sign, $res);
  //释放资源
  openssl_free_key($res);
  return $sign;
}

 

2. verify 验证代码:

function verify($data, $sign) {
  //读取支付宝公钥文件
  $pubKey = file_get_contents('key/alipay_public_key.pem');
  //转换为openssl格式密钥
  $res = openssl_get_publickey($pubKey);
  //调用openssl内置方法验签,返回bool值
  $result = (bool)openssl_verify($data, $sign, $res);
  //释放资源
  openssl_free_key($res);
  return $result;
}

 

3. 解密代码

function decrypt($content) {
  //读取商户私钥
  $priKey = file_get_contents('key/rsa_private_key.pem');
  //转换为openssl密钥,必须是没有经过pkcs8转换的私钥
  $res = openssl_get_privatekey($priKey);
  //声明明文字符串变量
  $result = '';
  //循环按照128位解密
  for($i = 0; $i < strlen($content)/128; $i++ ) {
    $data = substr($content, $i * 128, 128);
  //拆分开长度为128的字符串片段通过私钥进行解密,返回$decrypt解析后的明文
    openssl_private_decrypt($data, $decrypt, $res);
  //明文片段拼接
    $result .= $decrypt;
  }
  //释放资源
  openssl_free_key($res);
  //返回明文
  return $result;
}

 

分享到:
评论

相关推荐

    php接口数据加密、解密、验证签名

    上述代码展示了如何使用PHP实现AES和RSA两种加密算法来处理接口数据。 首先,AES(Advanced Encryption Standard)是一种对称加密算法,适用于大量数据的快速加密和解密。在示例中,使用了`Crypt_AES`类(可能来自...

    php版ssl加密解密上传密钥

    本篇文章将深入探讨PHP实现SSL加密解密以及如何生成密钥,结合提供的"XRsa.php"和"index.php"文件,我们来详细了解这一过程。 首先,我们要理解SSL的基本原理。SSL是一种网络安全协议,用于建立安全的网络连接,...

    php+uni-app AES加密解密.rar

    下面我们将深入探讨PHP和uni-app如何实现AES加密解密。 1. PHP的AES加密解密: PHP提供了多种库来实现AES加密,其中最常用的是`openssl_encrypt`和`openssl_decrypt`函数。这两个函数支持多种加密模式,包括AES-...

    PHP下SSL加密解密、验证、签名方法(很简单)

    以上就是PHP中使用OpenSSL进行SSL加密、解密、签名和验证的基本方法。在实际应用中,还需要注意安全地存储和管理密钥,以及处理可能出现的错误情况。此外,这些技术常用于支付接口、API认证等场景,确保数据的安全...

    Delphi(delphi7-XE)标准RSA加密,解密,签名.与C,Java,php等通用

    RSA算法是一种非对称加密技术,它在信息安全领域有着广泛的应用,特别是在数据加密、数字签名以及安全通信等方面。本篇文章将深入探讨Delphi (从delphi7到XE版本)中的RSA实现,以及如何与其他编程语言如C、Java、PHP...

    PHP通过OpenSSL生成证书、密钥并且加密解密数据,以及公钥,私钥和数字签名

    **私钥签名**:发送方使用自己的私钥对信息创建数字签名,接收方使用发送方的公钥来验证签名的真实性。 #### 二、准备工作 为了在PHP中使用OpenSSL扩展来生成证书、密钥并执行加密解密操作,需要确保服务器环境...

    asp.net RSA 私钥加密公钥解密 能解 php Java 实现RSA加密互通

    文件"RSATest"可能是测试代码或数据,它可能包含了实现上述流程的示例代码,用于验证RSA加密在不同环境下的互通性。 总之,理解并熟练运用RSA加密技术,以及了解如何在不同编程语言之间实现互通,对于开发安全的...

    基于PHP的字符串加密解密程序.zip

    这个"基于PHP的字符串加密解密程序.zip"文件显然包含了关于如何在PHP中实现字符串加密和解密的代码示例或者库。让我们深入探讨一下PHP中的字符串加密解密技术及其相关知识点。 首先,字符串加密的主要目的是保护...

    API接口对接生成签名与验证签名

    ### API接口对接生成签名与验证签名 #### 一、生成签名机制 在API接口对接过程中,为了确保数据的安全性和防止数据被篡改,通常会采用生成签名的方式来进行数据的校验。下面详细介绍如何生成签名: 1. **参数排序...

    密码使用SM2加密传输,SM2加解密

    在压缩包文件名称列表中只看到"SM2",这意味着压缩包可能包含了与SM2算法相关的多种文件,比如SM2的JavaScript实现文件、示例代码、库文件或者文档等,这些都为开发者提供了实现SM2加密解密功能的必要组件。...

    Yii 实现数据加密和解密的示例代码

    除了密码处理,Yii还提供了加密和解密数据的方法,包括`encryptByPassword()`, `decryptByPassword()`, `encryptByKey()` 和 `decryptByKey()`。 - `encryptByPassword()` 和 `decryptByPassword()` 使用一个秘密的...

    php生成秘钥和公钥,以及秘钥和公钥签名验证

    公钥是公开的,可以分发给他人,用于加密和验证签名。 生成密钥对: 在PHP中,可以使用`openssl_pkey_new()`函数来生成一个新的RSA密钥对。以下是一个简单的示例: ```php $config = array( "digest_alg" =&gt; "sha...

    ThinkPHP实现的rsa非对称加密类示例

    ThinkPHP框架中引入密钥文件实现RSA加密解密的相关操作技巧包括了几个重要步骤。首先,需要正确地引入公钥和私钥文件到系统中。通常这可以通过配置文件或者类常量来指定密钥文件的路径。例如,在提供的代码片段中,...

    中行PHP 签名验签demo

    2. 验证签名:使用发送方的公钥对签名进行解密,得到哈希值。如果解密成功,说明签名有效。 3. 哈希比对:计算接收到的原始数据的SHA256哈希值,与解密后的哈希值进行对比。如果两者一致,证明数据在传输过程中未被...

    java_PHP翼支付签名验签.zip

    在实际开发中,开发者需要对签名验签过程进行严格的测试,确保在各种情况下都能正确地验证签名,防止恶意攻击和欺诈行为。 9. **安全性考量**: 除了技术实现外,还应注意证书和私钥的管理,避免私钥泄露。同时,...

    PHP版RSA加密算法

    除了基本的加密和解密,还可以进行数字签名和验证,这在确保数据完整性和防止中间人攻击方面非常有用。在PHP中,可以使用`sign()`和`verify()`方法来实现。 总的来说,PHP版RSA加密算法提供了安全的非对称加密手段...

Global site tag (gtag.js) - Google Analytics