php rsa理解
参考链接:http://www.cnblogs.com/firstForEver/p/5803940.html
自己封装的一个类:
- <?php
- class CRsaAuthorization
- {
- public static $public_key='-----BEGIN PUBLIC KEY-----
- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCzNqnKnUn6S7WkOPQroM1rkh7j
- nofhvUiWjU8N4RrHtnTW4FPz1540EXTP6n2+ohK5r1AujFaLLIk9PsM+guWY5iKk
- 9AoeLOSlDCX66ubuOnt0UpMK0pXwFrBl/M9FNNVVbfA/dWxbM65akhsLLB46o8/v
- 2oHdArVF4DVrh4rIhQIDAQAB
- -----END PUBLIC KEY-----';
- private static $pu_key;
- private static $pi_key;
- private $licence;
- function __construct()
- {
- self::$pu_key=openssl_pkey_get_public(self::$public_key);
- // var_dump(self::$pu_key);
- }
- // public function get_public_key(){
- // }
- public function setPuKey($public_key){
- self::$pu_key=openssl_pkey_get_public($public_key);
- }
- public function setPiKey($private_key){
- self::$pi_key = openssl_pkey_get_private($private_key);
- }
- public function privateDecrypt($encrypted = ''){
- // if (!is_string($encrypted)) {
- // return ;
- // }
- $split = str_split($encrypted, 172);// 1024bit 固定172
- foreach ($split as $part) {
- $isOkay = openssl_private_decrypt(base64_decode($part), $de_data, self::$pi_key);// base64在这里使用,因为172字节是一组,是encode来的
- if(!$isOkay){
- return false;
- }
- $decode_data .= $de_data;
- }
- return $decode_data;
- }
- public function publicDecrypt($encrypted = '')
- {
- if (!is_string($encrypted)) {
- return ;
- }
- // $encrypted = substr($encrypted,5);
- $encrypted = substr($encrypted,0,-5);
- // echo $encrypted;
- $size=strlen($encrypted);
- // echo $size;
- $result="";
- for($i=0;$i<($size/172);$i++)
- {
- $data=substr($encrypted,$i*172,172);
- // echo $data."---------";
- if((openssl_public_decrypt(base64_decode($data), $decrypted, self::$pu_key)))
- {
- $result.=$decrypted;
- // echo $result;
- }
- else{
- // echo "decrypt failed";
- $result = "";
- }
- }
- return $result;
- }
- public function publicEncrypt($originalData){
- $split = str_split($originalData, 100);// 1024bit && OPENSSL_PKCS1_PADDING 不大于117即可
- foreach ($split as $part) {
- $isOkay = openssl_public_encrypt($part, $en_data, self::$pu_key);
- if(!$isOkay){
- return false;
- }
- // echo strlen($en_data),'<br/>';
- $encode_data .= base64_encode($en_data);
- }
- return $encode_data;
- }
- public function md5Checked($data,$parseLicence)
- {
- $uid = exec('awk -F "=" \'/product_uuid/{print $2}\' /etc/save_env',$output,$ret);
- if(empty($uid)) echo "获取uuid失败";
- // $data =
- // $uid = "faf6d7fda265a4c65416009164398372d12f1f3d7f4cac2f";
- $chkstr=json_encode($data).$uid;
- // echo $chkstr."<br>";
- $strmd5=md5($chkstr);
- // echo "----".$strmd5."<br>";
- $licence="";
- for($i=1;$i<strlen($strmd5);$i=$i+2)
- {
- $licence .=strtoupper($strmd5[$i]);
- }
- // echo "licence:".$licence;
- if($licence!=$parseLicence){
- return false;
- }else{
- return true;
- }
- }
- }
- ?>
php rsa理解的更多相关文章
- java-信息安全(六)-基于RSA理解数字签名示例
概述 java-信息安全(四)-数据签名.数字证书 java-信息安全(五)-非对称加密算法RSA RSA工具类 使用java-信息安全(五)-非对称加密算法RSA项目中RSACoder 数字签名理解 ...
- PJzhang:国内常用威胁情报搜索引擎说明
猫宁!!! 参考链接: https://www.freebuf.com/column/136763.html https://www.freebuf.com/sectool/163946.html 如 ...
- 更多细节的理解RSA算法
一.概述 RSA算法是1977年由Ron Rivest.Adi Shamir 和 Leonard Adleman三人组在论文A Method for Obtaining Digital Signatu ...
- RSA算法笔记+理解
明天网络安全考试了,看了一下午,还没理解透,持续更新... 质数: 除了1和它本身以外不再有其他因素的数互质关系: 两个正整数,除了1以外,没有其他公因子RSA实现了非对称加密DES实现了对称加密** ...
- 怎么理解RSA算法
原文地址:http://www.ittenyear.com/414/rsa/ 怎么理解RSA算法 能够把非对称加密算法里的公钥想象成一个带锁的箱子,把私钥想象成一把钥匙 能够把对称加密算法里的密钥想象 ...
- RSA算法理解
RSA加密算法是最常用的非对称加密算法,CFCA在证书服务中离不了它.但是有不少新来的同事对它不太了解,恰好看到一本书中作者用实例对它进行了简化而生动的描述,使得高深的数学理论能够被容易地理解.我们经 ...
- 彻底理解RSA加密算法
RSA是非常典型的非对称加密算法 它的算法是这样的 加密是我们把明文M转化成密文C 需要用到加密运算 而解密时我们要用解密运算将密文C转化成M 从表达式中 可以看出 e和d使我们需要确定的参数 而N是 ...
- [已解决] 快速理解RSA算法
RSA算法基础详解 http://www.cnblogs.com/hykun/p/RSA.html RSA算法原理(一) http://www.ruanyifeng.com/blog/2013/06/ ...
- 再谈加密-RSA非对称加密的理解和使用
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...
随机推荐
- BZOJ2716 [Violet]天使玩偶(cdq分治+树状数组)
非常裸的KD-tree.然而我没学啊. 考虑如何离线求一个点在平面中的曼哈顿最近点. 绝对值显得有点麻烦,于是把绝对值拆开分情况讨论一波.对于横坐标小于该点的,记录对于纵坐标的前缀x+y最大值和后缀x ...
- IDEA 快捷键修改(长期更新)
最近误操作,导致idea的快捷键没了. 痛定思痛,打算记录一下,以前修改过的key map 搜索一下就好了: 1 代码格式化 -- reformat code:Ctrl+Alt+L(如果按了没反应, ...
- Network POJ - 3694 (连通图标求桥)
有上述两个数组定义可知:对于某点root,其有一儿子v,则有: 1. 如果dfn[root]<=low[v]此点是割点(对于dfs树的根,即最初节点需要两个儿子才是割点) 2. ...
- Codeforces Round #426 (Div. 2) A,B,C
A. The Useless Toy 题目链接:http://codeforces.com/contest/834/problem/A 思路: 水题 实现代码: #include<bits/st ...
- get改post
//原模式,get 入参只能小于260字符 location.href = hrefStr; localhost/getinfo/UUSDDJSKDJSJKJK 后台 getinfo(string i ...
- python构建bp神经网络_曲线拟合(一个隐藏层)__1.可视化数据
1.将数据写入csv文件,应该可以python代码直接实现数据集的写入,但我对文件读取这块不太熟练,等我成功了再加上,这里我直接手写将数据集写入Excel 2.然后把后缀改成.csv就可以了,利用pa ...
- 线段树分治总结(线段树分治,线段树,并查集,树的dfn序,二分图染色)
闲话 stO猫锟学长,满脑子神仙DS 网上有不少Dalao把线段树分治也归入CDQ分治? 还是听听YCB巨佬的介绍: 狭义:只计算左边对右边的贡献. 广义:只计算外部对内部的贡献. 看来可以理解为广义 ...
- 【更新】搭建 Zookeeper-3.4.11 集群
先准备好三台linux(虚拟机). 1. 先把Java环境配好.我CentOS-7-x86_64-DVD-1708 + jdk1.8.0_161 1.1 先把jdk上传到系统里面(我利用的Filezi ...
- DOM表格操作
注意:就算代码中不包含<tbody>标签,浏览器解析时也可能会自动添加,因此需要注意子元素的选择 表格操作用到的属性: 1.tHead 2.tBodies 3.tFoot 更为细致的有: ...
- 也谈同步异步I/O
也谈同步异步I/O [转自: http://www.smithfox.com/?e=191 ] I/O Model 是一个很大的话题, 也是一个实践性很强的事情, 网上有各种说法和资料, 我们必须用辩 ...