PHP非对称与对称双向加密解密的方式

这篇具有很好参考价值的文章主要介绍了PHP非对称与对称双向加密解密的方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

RSA非对称加密解密:

什么是RSA非对称加密解密解析:

解析:

为什么使用:

有什么优点:

DEMO:

AES、DES、3DES等对称加密解密:

解析:

为什么使用:

有什么优点:

DEMO:


RSA非对称加密解密:

什么是RSA非对称加密解密解析:

解析:

RSA非对称加密解密算法是一种广泛应用于信息安全领域的加密算法。它不同于常规的对称加密,如相同的密钥用于加密和解密,而是使用一对不同的密钥,即公钥和私钥,进行加密和解密的过程。

在RSA加密算法中,甲方首先生成一对密钥,并将其中的一个作为公钥公开给其他方;得到公钥的乙方则使用该公钥对机密信息进行加密后发送给甲方;最后,甲方用自己的另一个专用密钥,即私钥,对接收到的加密信息进行解密。

值得一提的是,RSA加密算法的加密原理基于一个非常简单但有深远影响的数论事实:两个大质数相乘易事,但一个大数分解为两个质数的乘积却困难重重。这就使得RSA算法具有极高的安全性,极其难以被破解。

然而,虽然RSA算法的安全性极高,但其实施过程中可能会面临一些问题,例如密钥配送问题。这是因为在确定下来的密钥如何让双方都知道的过程中,密钥本身也是信息,其传输过程也可能被拦截和窃取。因此,解决密钥配送问题对于确保RSA算法的安全性至关重要。

为什么使用:

RSA非对称加密解密算法在信息安全领域得到广泛应用,其最主要的优点在于安全性极高。与常规的对称加密不同,如相同的密钥用于加密和解密,RSA算法使用的是一对不同的密钥,即公钥和私钥,进行加密和解密的过程。公钥是公开的,私钥是自己保存的,无需将私钥给别人。

然而,RSA算法也存在一些缺点。首要的一点就是加密和解密花费时间长、速度慢,只适合对少量数据进行加密。此外,RSA算法的加密长度为2048位,因此对于服务端的消耗是比较大的,所以计算的速度也会比较慢,效率相对较低。

总的来说,虽然RSA算法的安全性和兼容性都很强,但是由于其加密解密效率较低,所以在实际应用中通常结合其他加密方法一起使用,例如:针对C/S模型,服务端计算出一对秘钥pub/pri。将私钥保密,将公钥公开。客户端请求服务端时,拿到服务端的公钥pub。客户端通过AES计算出一个对称加密的秘钥X。然后使用pub将X进行加密。客户端将加密后的密文发送给服务端。

有什么优点:

1.RSA非对称加密解密算法的优点主要体现在其高度的安全性上。首先,该算法的运作原理基于一个深奥的数论事实:将两个大素数相乘很容易,但反之却极其困难。因此,只要这两个素数的秘密被妥善保管,用它们加密的信息就能得到有效保护。

2.RSA算法的一个显著特点是它使用两把不同的密钥,公钥和私钥。公钥可以公开,而私钥则需要保密保存,无需将其提供给他人。这一特性使得RSA在许多场合变得非常有用,特别是在需要通过网络传输密钥的情况下。由于不需要在网络中传输密钥,因此可以避免密钥在传输过程中被窃取或篡改的风险。

3.尽管RSA算法具有很高的安全性,但它也存在一些缺点。比如,RSA算法的加解密过程可能会花费较长的时间,因此它更适合对少量数据进行加密。此外,RSA算法的效率相对较低,因此在处理大量数据时可能不太适用。为了解决这个问题,实际应用中常常会结合其他加密方式,如AES等进行混合使用。例如在C/S模型中,服务端计算出一对秘钥pub/pri,将私钥保密,将公钥公开。客户端请求服务端时,拿到服务端的公钥pub,通过AES计算出一个对称加密的秘钥X,然后使用pub将X进行加密,最后将加密后的密文发送给服务端。

DEMO:
<?php
// 生成密钥对
$keyPair = openssl_pkey_new(array(
    "private_key_bits" => 2048,
    "private_key_type" => OPENSSL_KEYTYPE_RSA,
));

// 获取私钥和公钥
openssl_pkey_export($keyPair, $privateKey);
$publicKey = openssl_pkey_get_details($keyPair)["key"];

// 要加密的数据
$data = "Hello, World!";

// 使用公钥进行加密
$encryptedData = '';
openssl_public_encrypt($data, $encryptedData, $publicKey, OPENSSL_PKCS1_OAEP_PADDING);
echo "Encrypted data: " . base64_encode($encryptedData) . PHP_EOL;

// 使用私钥进行解密
$decryptedData = '';
openssl_private_decrypt($encryptedData, $decryptedData, $privateKey, OPENSSL_PKCS1_OAEP_PADDING);
echo "Decrypted data: " . $decryptedData . PHP_EOL;
?>
 

在这个示例中,我们首先生成了一个RSA密钥对,然后使用公钥对数据进行了加密,最后使用私钥对数据进行了解密。注意,由于RSA算法的特性,加密和解密的过程可能会花费一些时间。

AES、DES、3DES等对称加密解密:

解析:

AES、DES、3DES都是对称加密算法,也就是说加密和解密使用的是同一个密钥。

DES(Data Encryption Standard)是一种使用密钥进行加密的块算法,出自IBM的研究,后来被美国政府正式采用并开始广泛流传。然而,现在普遍认为DES由于其56位密钥长度较短,安全性不足,已经可以在短时间内被破解,因此现在使用越来越少。

3DES(Triple DES),也称TDES,是DES的加强版本,为了解决DES安全性不足的问题而出现。它使用3条56位的密钥对数据进行三次加密,使得即使攻击者拥有大量的计算资源,也难以破解。

AES(Advanced Encryption Standard)则是目前最流行的对称加密算法之一,它的密钥长度比DES更长,因此更安全。AES算法的出现正是为了取代DES。

在对称加密中,发信方将明文和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。

为什么使用:

对称加密算法,如AES、DES和3DES等,被广泛使用是因为它们提供了一种高效且可靠的方法来保护数据的机密性。这些算法通过使用相同的密钥进行加密和解密操作,使得加解密过程变得相对简单快速。

然而,这些算法的安全性各不相同。例如,DES是一种早期的对称加密算法,其密钥长度为56位,虽然加密速度较快,但由于其安全性较低,易受到暴力破解和差分攻击等攻击手段的攻击,因此现在使用越来越少。 为了提高安全性,出现了3DES,也称Triple DES,这是DES向AES过渡的加密算法,它使用3条56位的密钥对数据进行三次加密,从而大大提高了加密的强度。

再进一步,AES(高级加密标准)是目前最流行的对称加密算法之一,它的密钥长度为128位或256位,安全性比DES和3DES更高。 AES算法的出现正是为了取代安全性较低的DES。 因此,在需要高度安全的场合,通常会选择使用AES等高安全性的对称加密算法来保护数据的机密性。

有什么优点:
  • 加密速度快:相对于非对称加密算法,对称加密算法由于只需要一个密钥进行加解密操作,所以其加密速度通常更快,适合加密大文件。

  • 安全性较高:虽然早期的DES算法由于密钥长度较短,易受到暴力破解和差分攻击等攻击手段的攻击,但是通过将其发展为3DES(Triple DES),也就是使用3条56位的密钥对数据进行三次加密,安全性得到了极大的提高。而目前最流行的AES(高级加密标准)的密钥长度为128位或256位,安全性更高。

  • 可逆性:对称加密算法的另一个特点是密文可逆,即可以通过同一个密钥进行解密操作,从而获取原始明文。

DEMO:
<?php
// 定义密钥和明文
$key = '0123456789abcdef'; // 密钥长度为16字节(128位)
$plaintext = 'Hello, world!'; // 明文

// 创建加密器对象,并指定加密模式为ECB模式
$cipher = "aes-128-ecb";
$ivlen = openssl_cipher_iv_length($cipher);
$iv = openssl_random_pseudo_bytes($ivlen);
$ciphertext = openssl_encrypt($plaintext, $cipher, $key, OPENSSL_RAW_DATA, $iv);
echo "密文:".bin2hex($ciphertext)."\n";

// 创建解密器对象,并指定加密模式为ECB模式
$decipher = "aes-128-ecb";
$decrypted_text = openssl_decrypt($ciphertext, $decipher, $key, OPENSSL_RAW_DATA, $iv);
echo "解密后的明文:".$decrypted_text."\n";
?>

在这个示例中,我们首先定义了一个密钥和一个明文,然后使用AES算法对其进行了加密和解密操作.文章来源地址https://www.toymoban.com/news/detail-723789.html

到了这里,关于PHP非对称与对称双向加密解密的方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用非对称加密(RSA) 实现前端加密后端解密

    数据加密方式有: 单向加密、对称加密、非对称加密、加密盐、散列函数、数字签名。 1、单向加密 单向加密通过对数据进行摘要计算生成密文,密文不可逆推还原。只能加密,不能解密,常用于提取数据的指纹信息以此来验证数据的完整性。但是会引发雪崩效应(雪崩效应

    2024年02月08日
    浏览(69)
  • RSA双向加解密(公钥加密-私钥解密;私钥加密-公钥解密)

            非对称加密算法中,提供一个公钥一个私钥。一般情况下,采用公钥加密、私钥解密的方式。         假设有这样一个场景:服务A与服务B需要通信,通信内容为了安全需要进行加密传输,并且服务A与服务B不能互相持有对方的钥匙。         我首先想到的是

    2024年02月11日
    浏览(67)
  • AES对称加密实战——前端js加密后端python解密

    高级加密标准(AES, Advanced Encryption Standard),是一种最常见的对称加密算法 。其加密流程如下图所示,发送方通过密钥对明文加密后进行网络传输,接收方用同样的密钥将密文解密。在前后端通讯场景中,可利用AES算法对用户密码进行加密后传输,防止被抓包而造成密码泄露。

    2024年02月04日
    浏览(61)
  • ajax中实现访问url已阅即焚的解决方案(url动态参数、变量加密、常量不变、php加密解密、API访问验证方式、爬虫阻止)

    “已阅即焚” 是一种通信方式,它指的是一旦消息被对方阅读后,消息内容会被自动删除或销毁,不再留下任何痕迹。这种方式通常用于提高信息的安全性和隐私保护。 在传统的通信应用中,已阅即焚的功能可以通过以下几种方式实现: 自动删除:消息在对方阅读后,会自

    2024年02月16日
    浏览(89)
  • 国密SM4对称加密Java加解密

    提示:国密SM4对称加密Java加解密 国家密码管理局 参考博文 SM4.0(原名SMS4.0)是中华人民共和国政府采用的一种分组密码标准,由国家密码管理局于2012年3月21日发布。相关标准为“GM/T 0002-2012《SM4分组密码算法》(原SMS4分组密码算法)”。 SM4 代码如下(示例): 在密码学中

    2024年02月11日
    浏览(53)
  • Java RSA加解密-非对称加密-公钥私钥加解密(使用hutool工具)

    之前一篇帖子(https://blog.csdn.net/u014137486/article/details/136413532)展示了使用原生Java进行RSA加解密,本文介绍下使用当下流行的Hutool工具进行RSA加解密的用法。 目录 一、在Linux环境下生成公钥、私钥文件 二、将生成的公私钥文件导入项目中并移除pem文件的前后公私钥标记 三、po

    2024年04月23日
    浏览(105)
  • uni-app和springboot完成前端后端对称加密解密流程

    概述 使用对称加密的方式实现。 前端基于crypto-js。 uni-app框架中是在uni.request的基础上,在拦截器中处理的。 springboot在Filter中完成解密工作。 uni-app 项目中引入crypto-js。 加密方法 解密方法 request拦截器 备注 使用encodeURIComponent方法是为了处理 字符“+”,这个对应java解密的

    2024年02月13日
    浏览(53)
  • C# 实现 国密SM4/ECB/PKCS7Padding对称加密解密

    C# 实现 国密SM4/ECB/PKCS7Padding对称加密解密,为了演示方便本问使用的是Visual Studio 2022 来构建代码的 1、新建项目,之后选择 项目 鼠标右键选择  管理NuGet程序包管理,输入  BouncyCastle 回车 添加BouncyCastle程序包 2、代码如下:CBC模式 代码如下:ECB模式 3、运行 4、SM4密码算法

    2024年02月11日
    浏览(65)
  • 【教程】解决php微擎中的goto加密解密,一键解密工具

    今天,我将向大家揭秘一款神奇的工具——goto解密工具,轻松解密这个看似棘手的问题。 无数开发者都曾因为php中的goto功能而头疼不已。goto解密工具其中之一就是解密goto代码。通过精妙的算法和强大的解析能力,它能够解密被goto加密的代码段,使你能够清晰地理解代码的

    2024年02月11日
    浏览(77)
  • Linux gpg命令(gpg指令、gpg加密工具)(GNU Privacy Guard、GnuPG)文件压缩加密、文件加密、文件解密、文件压缩密码、解压密码、GPG密钥、数字签名、非对称加密

    GNU Privacy Guard (GnuPG或GPG) 是一个完全免费的开源实现,用于OpenPGP标准的数据加密和解密。这种加密方式可以用于保护敏感数据,确保其在传输过程中不被截获或篡改。本文将介绍在Linux环境中如何使用GPG加密工具。 安装gpg 在大多数Linux发行版中,GPG已经预先安装了。 如果未安

    2024年02月03日
    浏览(85)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包