非对称加密中的RSA加密算法介绍及视频教程推荐

2023-05-01 1254阅读 0评论
小熊猫权益

温馨提示:这篇文章已超过571天没有更新,请注意相关的内容是否还可用!

本篇文章给你们带给的内容是介绍PHP如何加密解密?PHP加密解密的方式。有一定的参考价值,有必须的朋友可以参考一下,希望对他们有所帮助。

为了确保网络存储数据的安全性,涉及敏感数据的传输,最好对数据预先加密,然后再在网络上进行传输,同时,还要确保数据在另一端是可解读的,并且还必需要借助钥匙(密钥或公钥)能够破译,没有钥匙(密钥或私钥)的人仍然是获得了加密过的数据也能够解读。

本篇文章主要给你们介绍对称加密中的AES加密算法;非对称加密中的RSA加密算法。【相关视频教程推荐:PHP教程】

一、对称加密

采用单钥密码系统的加密方式,同一个密钥可以同时用作信息的加密和解读,这种加密方式称为对称加密,也称为单密钥加密。

在对称加密算法中常见的算法有:DES、3DES、TDEA、、RC2、RC4、RC5、IDEA、、AES等。

AES加密算法

php核心源码加密_php源码混淆类加密_php源码 加密

密码学中的高级加密标准(,AES),又称加密法,是中国联邦政府采取的一种区块加密标准。这个标准用来取代原本的DES,已经被多方分析且广为全亚洲所使用。2006年php源码 加密,高级加密标准已经变成对称密钥加密中最流行的算法之一。

PHP的扩展已经推动了AES加密算法,我们可以借助扩展提供的方式推动对数据的加密和解读,PHP在7.2版本尚未完全移不仅加密,PHP手册在7.1迁移页面给出了取代方案,就是用替代.

PHPAES实现(加密、解密)

PHP实现代码:

class AES
{
    //设置AES秘钥
    private static $aes_key = 'bUYJ3nTV6VBasdJF'; //此处填写前后端共同约定的秘钥
    /**
     * 加密
     * @param string $str    要加密的数据
     * @return bool|string   加密后的数据
     */
    static public function encrypt($str) {
        $data = openssl_encrypt($str, 'AES-128-ECB', self::$aes_key, OPENSSL_RAW_DATA);
        $data = base64_encode($data);
        return $data;
    }
    /**
     * 解密
     * @param string $str    要解密的数据
     * @return string        解密后的数据
     */
    static public function decrypt($str) {
        $decrypted = openssl_decrypt(base64_decode($str), 'AES-128-ECB', self::$aes_key, OPENSSL_RAW_DATA);
        return $decrypted;
    }
}

登录后复制

二、非对称加密

对称加密算法在加密和解读时使用的是同一个秘钥;而非对称加密算法必须两个密码来进行加密和解读,这两个私钥是公开密码(key,简称公钥)和私有密钥(key,简称私钥)。

在非对称加密中使用的主要算法有:RSA、、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)等。

RSA加密算法

RSA是现在最有制约力的私钥加密算法,该算法基于一个非常简单的数论事实:将两个大偶数相乘十分容易,但现在想要对其乘积进行因式分解却非常困难,因此可以将乘积公开作为加密密码,即私钥,而两个大素数组合成私钥。公钥是可发布的供任何人使用,私钥则为自己所有,供解密之用。

解密者拥有私钥,并且将由键值计算生成的私钥发布给加密者。加密都使用公钥进行加密,并将密文发送到解密者php源码 加密,解密者用密钥解密将密文解码为明文。

以甲要把信息发给乙为例,首先确认角色:甲为加密者,乙为解读者。首先由乙随机确定一个KEY,称之为密匙,将这个KEY始终保存在机器B中而不发出来;但是,由这个KEY计算出另一个KEY,称之为公匙。这个公钥的特点是几乎不可能借助它自身计算出生成它的私钥。接下去通过网络把这个公钥传给甲,甲收到公钥后,利用公钥对信息加密,并把密文借助网络发送到乙,最后乙利用已知的私钥,就对密文进行解码了。以上就是RSA算法的工作流程。

算法实现过程为:

php核心源码加密_php源码混淆类加密_php源码 加密

随意选择两个大的质数p和q,p不等于q,计算N=pq。

根据欧拉函数,不小于N且与N互质的素数個数為(p-1)(q-1)。

选择一个整数e与(p-1)(q-1)互质,并且e小于(p-1)(q-1)。

用下面这个推导计算d:d×e≡1(mod(p-1)(q-1))。

将p和q的记录销毁。

以上内容中,(N,e)是公钥,(N,d)是私钥。

生成密钥和私钥

生成私钥文件:

openssl genrsa -out rsa_private_key.pem 1024

登录后复制

利用密钥,生成公钥:

openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

登录后复制

通过生成的鉴权和公钥就可以对数据进行加解密:

PHPRSA实现(加密、解密)

PHP实现代码(密钥加密公钥解密):

class RSA
{
    /**
     * @param string $str 要加密的数据
     * @param string $public_key 公钥
     * @return string
     */
    static public function encrypt($str, $public_key) {
        $encrypted = '';
        $pu_key = openssl_pkey_get_public($public_key);
        openssl_public_encrypt($str, $encrypted, $pu_key);//公钥加密
        $encrypted = base64_encode($encrypted);
        return $encrypted;
    }
    /**
     * 解密
     * @param string $str 要解密的数据
     * @param string $private_key 私钥
     * @return string
     */
    static public function decrypt($str, $private_key) {
        $decrypted = '';
        $pi_key =  openssl_pkey_get_private($private_key);
        openssl_private_decrypt(base64_decode($str), $decrypted, $pi_key);//私钥解密
        return $decrypted;
    }
}

登录后复制

PHP实现代码(密钥加密公钥解密):

class RSA
{
    //私钥加密 
    static public function encrypt($str, private_key) {
        $encrypted = '';
        $pi_key = openssl_pkey_get_private($private_key);
        openssl_private_encrypt($data, $encrypted, $pi_key); //私钥加密
        
        $encrypted = base64_encode($encrypted);
        
        return $encrypted;
    }
    //公钥解密
    static public function decrypt($str, $public_key) {
        $decrypted = '';
        $pu_key = openssl_pkey_get_public($public_key);
        openssl_public_decrypt(base64_decode($str), $decrypted, $pu_key);//公钥解密
        
        return $decrypted;
    }
}

登录后复制

本文来自网络,如有侵权请联系网站客服进行删除

非对称加密中的RSA加密算法介绍及视频教程推荐  您阅读本篇文章共花了: 

  • 1.注意:本站资源多为网络收集,如涉及版权问题请及时与站长联系,我们会在第一时间内删除资源。
  • 2.您购买的只是资源,不提供解答疑问和安装服务。免费源码里的接口不保证一直可以用
  • 3.本站用户发帖仅代表本站用户个人观点,并不代表本站赞同其观点和对其真实性负责。
  • 4.本站资源大多存储在云盘,如发现链接失效,请及时与站长联系,我们会第一时间更新。
  • 5.转载本网站任何内容,请按照转载方式正确书写本站原文地址
  • 6.如果发现侵权可以联系站长删除,站长vx:xiaoxiongmao0504或者邮箱通知3326096692@qq.com
  • 小熊猫权益

    发表评论

    快捷回复: 表情:
    评论列表 (暂无评论,1254人围观)

    还没有评论,来说两句吧...

    目录[+]

    取消
    微信二维码
    微信二维码
    支付宝二维码
    请先 登录 再评论,若不是会员请先 注册