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

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...

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

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

    PHP RSA PKI 加密与解密 详细范例

    RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,广泛应用于网络安全,包括数字签名、数据加密和身份验证。在PHP中实现RSA公钥基础设施(PKI)加密和解密,可以帮助开发者保护数据免受未经授权的访问。 标题...

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

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

    PHP 加密与解密

    通常,一个良好的加密解密系统会结合多种策略,如使用加盐的哈希函数存储密码,使用对称加密保护敏感数据,并利用非对称加密进行安全的密钥交换。 总之,PHP加密与解密技术涉及广泛的理论和实践知识,包括哈希函数...

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

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

    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 RSA PKI 在Openssl下加密与解密 详细范例(二)

    此外,还可以使用OpenSSL的其他功能,如签名和验证,以增强数据完整性。 总的来说,PHP结合OpenSSL的RSA加密和解密功能为Web应用程序提供了强大的安全性保障。通过熟练掌握这一技术,开发者可以构建更安全、更可靠...

    中行PHP 签名验签demo

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

Global site tag (gtag.js) - Google Analytics