linux 生成非对称,linux下如何生成公钥和私钥,使用非对称加密的实例

apache提供工具open-ssh可以生产秘钥

私钥生成方式

openssl genrsa -out rsa_private.pem 1024

find / -name rsa_private.pem

直接登录服务器生成

ee6ad08eba30a9434109a36c53eb7e14.png

生成公钥文件 需要在私钥的基础上生成

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

48d4d01ff879a763999af4a0c7450952.png

AES.php

采用公钥加密,私钥解密

每次密文都在变化但是,解密的内容不变化

非对称加密比对称加密要慢一些

9d6af70a85f4a20bedc266c1461c41ea.png

代码可以使用私钥加密。公钥解密

下面是使用私钥加密,公钥解密,发现密文不会变化,至于为什么公钥加密私钥解密密文会变化,而私钥加密公钥解密不变化跟RSA算法有关,需要去看相关专业的资料

0a300f6853a1794348314ee450b48730.png

//PULIC KEY

$public_key='-----BEGIN PUBLIC KEY-----

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC42exbLrawxAOUoHb4DHr1dsfO

IIV3G5ozgjw/fhaiWE2tTO1kHu3irkY5/tVH/u4qT1r8yhyAmFFFmJ5aYqogFSrJ

h8oUjy/D+GK88cfEUPGyuSyzH9Smn7mzN9jDsEigC59VSpH4oJkSSNYuP4M5/cq4

BEsrskCQXDT3COU0gwIDAQAB

-----END PUBLIC KEY-----';

//private_key

$private_key='-----BEGIN RSA PRIVATE KEY-----

MIICXQIBAAKBgQC42exbLrawxAOUoHb4DHr1dsfOIIV3G5ozgjw/fhaiWE2tTO1k

Hu3irkY5/tVH/u4qT1r8yhyAmFFFmJ5aYqogFSrJh8oUjy/D+GK88cfEUPGyuSyz

H9Smn7mzN9jDsEigC59VSpH4oJkSSNYuP4M5/cq4BEsrskCQXDT3COU0gwIDAQAB

AoGBAKxYSl0NZbnTV39ISQOmJzIbB9kwSx+s9Y1WvLN57MJ6UBnm4mJ5z9OMJt/F

r7cLgaSjDjMogYCIAyY/UEz3NqNS+pnjwMiHVePecQ3tJzVVSlvzhn0QZmgYbOi1

1+iRaJTvjuFz1R/CDx4RwUsPPYj3j3tNVda9StPb2v19KoXJAkEA4sVVAi95wQtm

pkgL/j4QPX097lB88SWcpqCOGUrMzP6Yf3eWaFyONKkBdwPUpyLNCBYQw4FrSf5G

6uMzfL1zVQJBANCtY0R29C2krybJrs8+D75OSZskeOLdrRBq85PrtL6bsmNchto8

ztacYqXs29DKvcG5DIFKkxVGwsN6n8EyOHcCQHaKFH/J9Wk13ni5XJuQMckSuNbk

eAtOT+7CKsWJ1jiqNWkcSCFRkHxyg/OEqxqbFHZPon+wHTdWlheeoIFqPukCQQDL

2nX87g+/fv+z7pYc0k3i5Ou26TxGs7NbNH/a4wngoozzz/HUxE5zDLa5zNc38rbI

xpNWwplI0aV1/RaPTxYlAkBSAaXvdZ4gvgBR/aRdSQrgVZIctjq3IfnAoDg5TozX

3vr3itJRXLftGUSmSwmshJ0CO2drjNfOzw+RQxlk9JtQ

-----END RSA PRIVATE KEY-----';

$data='我在操作加密啦啦啦啦';

//使用私钥加密

openssl_private_encrypt($data, $encrypt_str, $private_key);

$encrypt_str=base64_encode($encrypt_str);

echo '私钥加密后的密文采用64位编码后是:'.$encrypt_str;

echo'

';

//使用公钥解密

openssl_public_decrypt(base64_decode($encrypt_str),$decrpt_str,$public_key);

echo '公钥解密后的数据是:'.$decrpt_str;

echo'

';

如果觉得写私钥 公钥在代码里太多了 也可以直接使用file_get_content把文件读取过来

8b7618a5851d0c64b259020555c6b765.png

最后把代码封装成一个类

$str='家世界阿加莎';

$rsa=new RSA();

$encrypt_str=$rsa->encrypt($str);

echo '加密后的数据是:'.$encrypt_str;

$decrpt_str=$rsa->decrypt($encrypt_str);

echo '

';

echo '解密后的数据是:'.$decrpt_str;

class RSA{

public function __construct()

{

//PULIC KEY

$this->public_key='-----BEGIN PUBLIC KEY-----

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC42exbLrawxAOUoHb4DHr1dsfO

IIV3G5ozgjw/fhaiWE2tTO1kHu3irkY5/tVH/u4qT1r8yhyAmFFFmJ5aYqogFSrJ

h8oUjy/D+GK88cfEUPGyuSyzH9Smn7mzN9jDsEigC59VSpH4oJkSSNYuP4M5/cq4

BEsrskCQXDT3COU0gwIDAQAB

-----END PUBLIC KEY-----';

//private_key

$this->private_key='-----BEGIN RSA PRIVATE KEY-----

MIICXQIBAAKBgQC42exbLrawxAOUoHb4DHr1dsfOIIV3G5ozgjw/fhaiWE2tTO1k

Hu3irkY5/tVH/u4qT1r8yhyAmFFFmJ5aYqogFSrJh8oUjy/D+GK88cfEUPGyuSyz

H9Smn7mzN9jDsEigC59VSpH4oJkSSNYuP4M5/cq4BEsrskCQXDT3COU0gwIDAQAB

AoGBAKxYSl0NZbnTV39ISQOmJzIbB9kwSx+s9Y1WvLN57MJ6UBnm4mJ5z9OMJt/F

r7cLgaSjDjMogYCIAyY/UEz3NqNS+pnjwMiHVePecQ3tJzVVSlvzhn0QZmgYbOi1

1+iRaJTvjuFz1R/CDx4RwUsPPYj3j3tNVda9StPb2v19KoXJAkEA4sVVAi95wQtm

pkgL/j4QPX097lB88SWcpqCOGUrMzP6Yf3eWaFyONKkBdwPUpyLNCBYQw4FrSf5G

6uMzfL1zVQJBANCtY0R29C2krybJrs8+D75OSZskeOLdrRBq85PrtL6bsmNchto8

ztacYqXs29DKvcG5DIFKkxVGwsN6n8EyOHcCQHaKFH/J9Wk13ni5XJuQMckSuNbk

eAtOT+7CKsWJ1jiqNWkcSCFRkHxyg/OEqxqbFHZPon+wHTdWlheeoIFqPukCQQDL

2nX87g+/fv+z7pYc0k3i5Ou26TxGs7NbNH/a4wngoozzz/HUxE5zDLa5zNc38rbI

xpNWwplI0aV1/RaPTxYlAkBSAaXvdZ4gvgBR/aRdSQrgVZIctjq3IfnAoDg5TozX

3vr3itJRXLftGUSmSwmshJ0CO2drjNfOzw+RQxlk9JtQ

-----END RSA PRIVATE KEY-----';

}

public function encrypt($data){

openssl_public_encrypt($data, $encrypt_str, $this->public_key);

return base64_encode($encrypt_str);

}

public function decrypt($data){

$data=openssl_private_decrypt(base64_decode($data),$decrpt_str,$this->private_key);

return $decrpt_str;

}

}

75a5260ba9c4231c2929728b227eaef7.png

https就是使用的rsa加密方式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值