首页 > 编程语言 >PHP RSA加密解密实例

PHP RSA加密解密实例

时间:2023-10-26 13:12:51浏览次数:46  
标签:加密 data RSA echo ------------- 解密 PHP ---------

<?php
header('Content-Type:text/html;charset=utf-8');
                    //RSA加密解密实例
$private_key =  <<<EOF
-----BEGIN RSA PRIVATE KEY-----  
MIICXQIBAAKBgQC3//sR2tXw0wrC2DySx8vNGlqt3Y7ldU9+LBLI6e1KS5lfc5jl  
TGF7KBTSkCHBM3ouEHWqp1ZJ85iJe59aF5gIB2klBd6h4wrbbHA2XE1sq21ykja/  
Gqx7/IRia3zQfxGv/qEkyGOx+XALVoOlZqDwh76o2n1vP1D+tD3amHsK7QIDAQAB  
AoGBAKH14bMitESqD4PYwODWmy7rrrvyFPEnJJTECLjvKB7IkrVxVDkp1XiJnGKH  
2h5syHQ5qslPSGYJ1M/XkDnGINwaLVHVD3BoKKgKg1bZn7ao5pXT+herqxaVwWs6  
ga63yVSIC8jcODxiuvxJnUMQRLaqoF6aUb/2VWc2T5MDmxLhAkEA3pwGpvXgLiWL  
3h7QLYZLrLrbFRuRN4CYl4UYaAKokkAvZly04Glle8ycgOc2DzL4eiL4l/+x/gaq  
deJU/cHLRQJBANOZY0mEoVkwhU4bScSdnfM6usQowYBEwHYYh/OTv1a3SqcCE1f+  
qbAclCqeNiHajCcDmgYJ53LfIgyv0wCS54kCQAXaPkaHclRkQlAdqUV5IWYyJ25f  
oiq+Y8SgCCs73qixrU1YpJy9yKA/meG9smsl4Oh9IOIGI+zUygh9YdSmEq0CQQC2  
4G3IP2G3lNDRdZIm5NZ7PfnmyRabxk/UgVUWdk47IwTZHFkdhxKfC8QepUhBsAHL  
QjifGXY4eJKUBm3FpDGJAkAFwUxYssiJjvrHwnHFbg0rFkvvY63OSmnRxiL4X6EY  
yI9lblCsyfpl25l7l5zmJrAHn45zAiOoBrWqpM5edu7c  
-----END RSA PRIVATE KEY-----
EOF;
  
$public_key = '-----BEGIN PUBLIC KEY-----  
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC3//sR2tXw0wrC2DySx8vNGlqt  
3Y7ldU9+LBLI6e1KS5lfc5jlTGF7KBTSkCHBM3ouEHWqp1ZJ85iJe59aF5gIB2kl  
Bd6h4wrbbHA2XE1sq21ykja/Gqx7/IRia3zQfxGv/qEkyGOx+XALVoOlZqDwh76o  
2n1vP1D+tD3amHsK7QIDAQAB  
-----END PUBLIC KEY-----'; 
//签名
function sign($data, $sign, $private_key){
    $d = openssl_sign($data, $sign, $private_key ,'SHA256');
    $sign = base64_encode($sign);
    return $sign; 
}
//验证
function verify($data, $sign, $public_key){+
    $sign = base64_decode($sign);
    $v = openssl_verify($data, $sign, $public_key ,'SHA256');
    return $v;
}

//私钥加密
function private_encrypt($data,$encrypted,$pi_key){
    openssl_private_encrypt($data,$encrypted,$pi_key); 
    $encrypted = base64_encode($encrypted);  
    return $encrypted; 
}
//公钥解密
function public_decrypt($data,$decrypted,$pu_key){
    openssl_public_decrypt(base64_decode($data),$decrypted,$pu_key); 
    return $decrypted; 
}
//公钥加密
function public_encrypt($data,$encrypted,$pu_key){
    openssl_public_encrypt($data,$encrypted,$pu_key); 
    $encrypted = base64_encode($encrypted);  
    return $encrypted;
}
//私钥解密
function private_decrypt($data,$decrypted,$pi_key){
    openssl_private_decrypt(base64_decode($data),$decrypted,$pi_key); 
    return $decrypted; 
}
$sign = '';
$encrypted = '';   
$decrypted = ''; 
$pi_key =  openssl_pkey_get_private($private_key);
$pu_key = openssl_pkey_get_public($public_key);

/*---------签名-------------*/
$data = 'AAAAA';
echo $data.'<br>签名:<br>';
echo sign($data, $sign, $private_key);
/*---------签名-------------*/
echo '<hr>';
/*---------验签-------------*/
$data = 'BBBBB';
$sign = 'dMHW4RooOpbUw8DYubIvkQskmGKG7jho0Lhp6FmHe/m28xzgLOLHAw+8zs+GzalYVGQYQ3cUbd4qCbT4uDG2I5cubC4R8fVPUItrt233d3YMVkacnNKWnoR9VeoEaS2HO6VrYBehXNVW6reGoOOJiqYLn/aWtYx84HbMKRKWRtg=';
echo $data.'和'.$sign.'<br>验签:<br>';
echo verify($data, $sign, $public_key);
/*---------验签-------------*/
echo '<hr><hr>';
/*---------私钥加密-------------*/
$data = 'CCCCCCCC';
echo $data.'<br>私钥加密:<br>';
echo private_encrypt($data, $encrypted, $pi_key);
/*---------私钥加密-------------*/
echo '<hr>';

/*---------公钥解密-------------*/
$data = 'BvjbtUzDKzZ2UbtWIFy7KPNJJGpDnS5Qd+w/kpYSFTg8l1kz+DqvCqfkBho2TRj8S5SFfy4DmFxyPnvpIhhUMC6bCMCOD8ULzk20rhqs7UZfX1OoTx9+IE7MO3slM91OqquO2HILHiiihIVBBn/l/0zAzH6GIC44LXJQUKJMDYI=';
echo $data.'<br>公钥解密:<br>';
echo public_decrypt($data, $decrypted, $pu_key);
/*---------公钥解密-------------*/
echo '<hr><hr>';
/*---------公钥加密-------------*/
$data = 'AAAAAAAAAAAAAAAAAAAA';
echo $data.'<br>公钥加密:<br>';
echo public_encrypt($data, $encrypted, $pu_key);
/*---------公钥加密-------------*/
echo '<hr>';

/*---------私钥解密-------------*/
$data = 'JZ2aRDoeiO1xzPFAhjbtJNMRRqZwrjjPK9d0dgRVtlMhWucHu6jrQR9QRETtM6eQgkrdvbxeMtJ87e6YmptYZUZZjALymT0yU7VO5aAVBKXnmyokqqfuJF41PYS6bSih/VFaIoanrTZGUf03suurjkbebx3yKLIBPdEgly6eM/k=';
echo $data.'<br>私钥解密:<br>';
echo private_decrypt($data,$decrypted,$pi_key);
/*---------私钥解密-------------*/
echo '<hr>';

 

标签:加密,data,RSA,echo,-------------,解密,PHP,---------
From: https://www.cnblogs.com/zhouein/p/17789172.html

相关文章

  • 解密长短时记忆网络(LSTM):从理论到PyTorch实战演示
    本文深入探讨了长短时记忆网络(LSTM)的核心概念、结构与数学原理,对LSTM与GRU的差异进行了对比,并通过逻辑分析阐述了LSTM的工作原理。文章还详细演示了如何使用PyTorch构建和训练LSTM模型,并突出了LSTM在实际应用中的优势。关注TechLead,分享AI与云服务技术的全维度知识。作者拥有1......
  • Linux 脚本加密解密工具
    1、系统自带工具gzexe加密方法:#gzexetest.sh此时在目录下就会产生一个test.sh~文件,该文件是源文件,test.sh是加密后的文件解密方法:#gzexe-dtest.sh在目录下就会产生一个test.sh~文件,该文件是源文件,test.sh是解密后的文件2、shc加密软件,unshc来解密软件#wgethtt......
  • java加密解密
    packagecom.pg;importcom.pg.utils.CommonUtils;importcom.sun.org.apache.xerces.internal.impl.dv.util.Base64;importjavax.crypto.BadPaddingException;importjavax.crypto.Cipher;importjavax.crypto.IllegalBlockSizeException;importjavax.crypto.NoSuch......
  • C# 加密–RSA前端与后台的加密&解密
    1.在线RSA加密,选用PKCS#1来生成公钥与私钥  http://web.chacuo.net/netrsakeypair2.下载前端JS框架http://travistidwell.com/jsencrypt/3.流程图 加解密过程:先从网站上生成publicKey与privateKey第一步返回publicKey前端,用来对password等敏感字段的加密。......
  • 查看Linux 、Apache 、 MySQL 、 PHP 版本的方法
    1.查看linux的内核版本,系统信息,常用的有三种办法:uname-a;more/etc/issue;cat/proc/version;2.查看apache的版本信息如果是通过yum,或者是rpm安装的,可以使用rpm-qa|gerphttpd来查看;还可以通过httpd-v来查询;当然,安装好apache后,可以直接elink回环查看apache的信息。3.查看ph......
  • GraphPrompt: Unifying Pre-Training and Downstream Tasks for Graph Neural Network
    目录概符号说明GraphPrompt代码LiuZ.,YuX.,FangY.andZhangX.GraphPrompt:Unifyingpre-traininganddownstreamtasksforgraphneuralnetworks.WWW,2023.概统一的图预训练模型+Prompt微调.符号说明\(G=(V,E)\),图;\(\mathbf{X}\in\mathbb{R}^{|......
  • thinkphp5 使用group查询最新的一条记录
    thinkphp5示例://子查询主要的在MAX(create_time)$subQuery=Db::table('fa_crm_record')->field('customer_id,MAX(create_time)AScreate_time')->group('customer_id')......
  • php js正则 解决 详情页图片超出问题 匹配img标签内容追加style样式,给富文本中的图片
    做小程序或手机端经常会遇到商品详情,文章详情里带图片的从别的地方复制过来带着样式,导致超出屏幕显示不全的问题php解决functionformat_img($content,$style=''){if(empty($style))$style='max-width:100%;height:auto;';$content=preg_replace("/(\<img)(?!(.*?styl......
  • Lattice .bek档案AES加密解密
    //BEK.h#ifndef__BEK_H__#define__BEK_H__#include<stdio.h>#include<stdlib.h>#include<stdbool.h>/////////////////////////////////////////////////////////////////////////////CRCTables////////////////////////////////////////////......
  • 爬虫加解密分析
    1、找到加密的接口地址,通过加密的接口地址全局搜索2、通过打断点的方式,找到加密串;3、找到用的是哪种加密方式,找到对应方式的加密语言加解密即可。     参考链接:https://blog.csdn.net/zhinian1204/article/details/124112512https://blog.csdn.net/cuilun000/a......