RSA加解密及RSA签名验证

工作中用到了非对称加密:RSA加解密及签名验证,根据查到的信息及工作中的问题总结,现在整理如下:

1. 准备好公钥和私钥,使用openssl工具生成RSA公钥和私钥对

1)生成RSA私钥:

genrsa -out rsa_private_key.pem 1024

该命令会生成1024位的私钥,可以在当前路径下看到rsa_private_key.pem文件。

2)把RSA私钥转换成PKCS8格式
输入命令pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM –nocrypt,并回车
得到生成功的结果,这个结果就是PKCS8格式的私钥,这个将密钥转换为PKCS8格式格式的只用在java语言中,PHP中不需要使用

3) 生成RSA公钥

输入命令rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem,并回车,
得到生成成功的结果,此时,我们可以看到一个文件名为rsa_public_key.pem的文件,打开它,可以看到-----BEGIN PUBLIC KEY-----开头,-----END PUBLIC KEY-----结尾的字符串,这个就是公钥。

2. RSA加密解密,项目中加解密使用的公私钥可能不同,但思路都是一样,以下贴出我加解密的方法及需要注意的问题:

<?php
    /**
     * RSA私钥加密,使用规定的私钥进行加密
     * @param $data array 需要加密的数据,加密数据的格式是json还是其他格式字串需要根据项目需求来确定
     * @return $encrypted String 加密后的数据
    */
    public function rsaPrivateEncrypt($data){
//        $pi_key = key($this->_shangmei_privateKey, 'private'); // 私钥,调用key()函数拼接正确格式私钥字串,并验证私钥可用
        $pri_key = file_get_contents('./Public/RSA/rsa_private_key.pem'); // 私钥,直接读取私钥文件,获取私钥
        $pi_key = openssl_pkey_get_private($pri_key); // 获取私钥,这个函数可用来判断公钥是否是可用的,必须要有
        $encrypted = '';
        $data = json_encode($data);
        //注意:最大允许加密长度为117,加密数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值