欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

linux下如何生成公钥和私钥 有大用

linux下如何生成公钥和私钥

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

私钥生成方式

openssl genrsa -out rsa_private.pem 1024

find / -name rsa_private.pem

直接登录服务器生成

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

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

 

AES.php

采用公钥加密,私钥解密

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

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

 

  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: lj
  5. * Date: 2018/10/21
  6. * Time: 9:36 PM
  7. */
  8. //PULIC KEY
  9. $public_key='-----BEGIN PUBLIC KEY-----
  10. MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC42exbLrawxAOUoHb4DHr1dsfO
  11. IIV3G5ozgjw/fhaiWE2tTO1kHu3irkY5/tVH/u4qT1r8yhyAmFFFmJ5aYqogFSrJ
  12. h8oUjy/D+GK88cfEUPGyuSyzH9Smn7mzN9jDsEigC59VSpH4oJkSSNYuP4M5/cq4
  13. BEsrskCQXDT3COU0gwIDAQAB
  14. -----END PUBLIC KEY-----';
  15. //private_key
  16. $private_key='-----BEGIN RSA PRIVATE KEY-----
  17. MIICXQIBAAKBgQC42exbLrawxAOUoHb4DHr1dsfOIIV3G5ozgjw/fhaiWE2tTO1k
  18. Hu3irkY5/tVH/u4qT1r8yhyAmFFFmJ5aYqogFSrJh8oUjy/D+GK88cfEUPGyuSyz
  19. H9Smn7mzN9jDsEigC59VSpH4oJkSSNYuP4M5/cq4BEsrskCQXDT3COU0gwIDAQAB
  20. AoGBAKxYSl0NZbnTV39ISQOmJzIbB9kwSx+s9Y1WvLN57MJ6UBnm4mJ5z9OMJt/F
  21. r7cLgaSjDjMogYCIAyY/UEz3NqNS+pnjwMiHVePecQ3tJzVVSlvzhn0QZmgYbOi1
  22. 1+iRaJTvjuFz1R/CDx4RwUsPPYj3j3tNVda9StPb2v19KoXJAkEA4sVVAi95wQtm
  23. pkgL/j4QPX097lB88SWcpqCOGUrMzP6Yf3eWaFyONKkBdwPUpyLNCBYQw4FrSf5G
  24. 6uMzfL1zVQJBANCtY0R29C2krybJrs8+D75OSZskeOLdrRBq85PrtL6bsmNchto8
  25. ztacYqXs29DKvcG5DIFKkxVGwsN6n8EyOHcCQHaKFH/J9Wk13ni5XJuQMckSuNbk
  26. eAtOT+7CKsWJ1jiqNWkcSCFRkHxyg/OEqxqbFHZPon+wHTdWlheeoIFqPukCQQDL
  27. 2nX87g+/fv+z7pYc0k3i5Ou26TxGs7NbNH/a4wngoozzz/HUxE5zDLa5zNc38rbI
  28. xpNWwplI0aV1/RaPTxYlAkBSAaXvdZ4gvgBR/aRdSQrgVZIctjq3IfnAoDg5TozX
  29. 3vr3itJRXLftGUSmSwmshJ0CO2drjNfOzw+RQxlk9JtQ
  30. -----END RSA PRIVATE KEY-----';
  31. $data='我在操作加密啦啦啦啦';
  32. //使用公钥加密
  33. openssl_public_encrypt($data, $encrypt_str, $public_key);
  34. $encrypt_str=base64_encode($encrypt_str);
  35. echo '加密后的密文采用64位编码后是:'.$encrypt_str;
  36. echo'<br>';
  37. //使用私钥解密
  38. openssl_private_decrypt(base64_decode($encrypt_str),$decrpt_str,$private_key);
  39. echo '解密后的数据是:'.$decrpt_str;
  40. echo'<br>';

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

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

  1. //PULIC KEY
  2. $public_key='-----BEGIN PUBLIC KEY-----
  3. MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC42exbLrawxAOUoHb4DHr1dsfO
  4. IIV3G5ozgjw/fhaiWE2tTO1kHu3irkY5/tVH/u4qT1r8yhyAmFFFmJ5aYqogFSrJ
  5. h8oUjy/D+GK88cfEUPGyuSyzH9Smn7mzN9jDsEigC59VSpH4oJkSSNYuP4M5/cq4
  6. BEsrskCQXDT3COU0gwIDAQAB
  7. -----END PUBLIC KEY-----';
  8. //private_key
  9. $private_key='-----BEGIN RSA PRIVATE KEY-----
  10. MIICXQIBAAKBgQC42exbLrawxAOUoHb4DHr1dsfOIIV3G5ozgjw/fhaiWE2tTO1k
  11. Hu3irkY5/tVH/u4qT1r8yhyAmFFFmJ5aYqogFSrJh8oUjy/D+GK88cfEUPGyuSyz
  12. H9Smn7mzN9jDsEigC59VSpH4oJkSSNYuP4M5/cq4BEsrskCQXDT3COU0gwIDAQAB
  13. AoGBAKxYSl0NZbnTV39ISQOmJzIbB9kwSx+s9Y1WvLN57MJ6UBnm4mJ5z9OMJt/F
  14. r7cLgaSjDjMogYCIAyY/UEz3NqNS+pnjwMiHVePecQ3tJzVVSlvzhn0QZmgYbOi1
  15. 1+iRaJTvjuFz1R/CDx4RwUsPPYj3j3tNVda9StPb2v19KoXJAkEA4sVVAi95wQtm
  16. pkgL/j4QPX097lB88SWcpqCOGUrMzP6Yf3eWaFyONKkBdwPUpyLNCBYQw4FrSf5G
  17. 6uMzfL1zVQJBANCtY0R29C2krybJrs8+D75OSZskeOLdrRBq85PrtL6bsmNchto8
  18. ztacYqXs29DKvcG5DIFKkxVGwsN6n8EyOHcCQHaKFH/J9Wk13ni5XJuQMckSuNbk
  19. eAtOT+7CKsWJ1jiqNWkcSCFRkHxyg/OEqxqbFHZPon+wHTdWlheeoIFqPukCQQDL
  20. 2nX87g+/fv+z7pYc0k3i5Ou26TxGs7NbNH/a4wngoozzz/HUxE5zDLa5zNc38rbI
  21. xpNWwplI0aV1/RaPTxYlAkBSAaXvdZ4gvgBR/aRdSQrgVZIctjq3IfnAoDg5TozX
  22. 3vr3itJRXLftGUSmSwmshJ0CO2drjNfOzw+RQxlk9JtQ
  23. -----END RSA PRIVATE KEY-----';
  24. $data='我在操作加密啦啦啦啦';
  25. //使用私钥加密
  26. openssl_private_encrypt($data, $encrypt_str, $private_key);
  27. $encrypt_str=base64_encode($encrypt_str);
  28. echo '私钥加密后的密文采用64位编码后是:'.$encrypt_str;
  29. echo'<br>';
  30. //使用公钥解密
  31. openssl_public_decrypt(base64_decode($encrypt_str),$decrpt_str,$public_key);
  32. echo '公钥解密后的数据是:'.$decrpt_str;
  33. echo'<br>';

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

最后把代码封装成一个类

  1. $str='家世界阿加莎';
  2. $rsa=new RSA();
  3. $encrypt_str=$rsa->encrypt($str);
  4. echo '加密后的数据是:'.$encrypt_str;
  5. $decrpt_str=$rsa->decrypt($encrypt_str);
  6. echo '<br>';
  7. echo '解密后的数据是:'.$decrpt_str;
  8. class RSA{
  9. public function __construct()
  10. {
  11. //PULIC KEY
  12. $this->public_key='-----BEGIN PUBLIC KEY-----
  13. MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC42exbLrawxAOUoHb4DHr1dsfO
  14. IIV3G5ozgjw/fhaiWE2tTO1kHu3irkY5/tVH/u4qT1r8yhyAmFFFmJ5aYqogFSrJ
  15. h8oUjy/D+GK88cfEUPGyuSyzH9Smn7mzN9jDsEigC59VSpH4oJkSSNYuP4M5/cq4
  16. BEsrskCQXDT3COU0gwIDAQAB
  17. -----END PUBLIC KEY-----';
  18. //private_key
  19. $this->private_key='-----BEGIN RSA PRIVATE KEY-----
  20. MIICXQIBAAKBgQC42exbLrawxAOUoHb4DHr1dsfOIIV3G5ozgjw/fhaiWE2tTO1k
  21. Hu3irkY5/tVH/u4qT1r8yhyAmFFFmJ5aYqogFSrJh8oUjy/D+GK88cfEUPGyuSyz
  22. H9Smn7mzN9jDsEigC59VSpH4oJkSSNYuP4M5/cq4BEsrskCQXDT3COU0gwIDAQAB
  23. AoGBAKxYSl0NZbnTV39ISQOmJzIbB9kwSx+s9Y1WvLN57MJ6UBnm4mJ5z9OMJt/F
  24. r7cLgaSjDjMogYCIAyY/UEz3NqNS+pnjwMiHVePecQ3tJzVVSlvzhn0QZmgYbOi1
  25. 1+iRaJTvjuFz1R/CDx4RwUsPPYj3j3tNVda9StPb2v19KoXJAkEA4sVVAi95wQtm
  26. pkgL/j4QPX097lB88SWcpqCOGUrMzP6Yf3eWaFyONKkBdwPUpyLNCBYQw4FrSf5G
  27. 6uMzfL1zVQJBANCtY0R29C2krybJrs8+D75OSZskeOLdrRBq85PrtL6bsmNchto8
  28. ztacYqXs29DKvcG5DIFKkxVGwsN6n8EyOHcCQHaKFH/J9Wk13ni5XJuQMckSuNbk
  29. eAtOT+7CKsWJ1jiqNWkcSCFRkHxyg/OEqxqbFHZPon+wHTdWlheeoIFqPukCQQDL
  30. 2nX87g+/fv+z7pYc0k3i5Ou26TxGs7NbNH/a4wngoozzz/HUxE5zDLa5zNc38rbI
  31. xpNWwplI0aV1/RaPTxYlAkBSAaXvdZ4gvgBR/aRdSQrgVZIctjq3IfnAoDg5TozX
  32. 3vr3itJRXLftGUSmSwmshJ0CO2drjNfOzw+RQxlk9JtQ
  33. -----END RSA PRIVATE KEY-----';
  34. }
  35. public function encrypt($data){
  36. openssl_public_encrypt($data, $encrypt_str, $this->public_key);
  37. return base64_encode($encrypt_str);
  38. }
  39. public function decrypt($data){
  40. $data=openssl_private_decrypt(base64_decode($data),$decrpt_str,$this->private_key);
  41. return $decrpt_str;
  42. }
  43. }

 

https就是使用的rsa加密方式


来自  http://www.pianshen.com/article/954391252/

来自 https://blog.csdn.net/resilient/article/details/83246000


普通分类: