参考链接: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理解的更多相关文章

  1. java-信息安全(六)-基于RSA理解数字签名示例

    概述 java-信息安全(四)-数据签名.数字证书 java-信息安全(五)-非对称加密算法RSA RSA工具类 使用java-信息安全(五)-非对称加密算法RSA项目中RSACoder 数字签名理解 ...

  2. PJzhang:国内常用威胁情报搜索引擎说明

    猫宁!!! 参考链接: https://www.freebuf.com/column/136763.html https://www.freebuf.com/sectool/163946.html 如 ...

  3. 更多细节的理解RSA算法

    一.概述 RSA算法是1977年由Ron Rivest.Adi Shamir 和 Leonard Adleman三人组在论文A Method for Obtaining Digital Signatu ...

  4. RSA算法笔记+理解

    明天网络安全考试了,看了一下午,还没理解透,持续更新... 质数: 除了1和它本身以外不再有其他因素的数互质关系: 两个正整数,除了1以外,没有其他公因子RSA实现了非对称加密DES实现了对称加密** ...

  5. 怎么理解RSA算法

    原文地址:http://www.ittenyear.com/414/rsa/ 怎么理解RSA算法 能够把非对称加密算法里的公钥想象成一个带锁的箱子,把私钥想象成一把钥匙 能够把对称加密算法里的密钥想象 ...

  6. RSA算法理解

    RSA加密算法是最常用的非对称加密算法,CFCA在证书服务中离不了它.但是有不少新来的同事对它不太了解,恰好看到一本书中作者用实例对它进行了简化而生动的描述,使得高深的数学理论能够被容易地理解.我们经 ...

  7. 彻底理解RSA加密算法

    RSA是非常典型的非对称加密算法 它的算法是这样的 加密是我们把明文M转化成密文C 需要用到加密运算 而解密时我们要用解密运算将密文C转化成M 从表达式中 可以看出 e和d使我们需要确定的参数 而N是 ...

  8. [已解决] 快速理解RSA算法

    RSA算法基础详解 http://www.cnblogs.com/hykun/p/RSA.html RSA算法原理(一) http://www.ruanyifeng.com/blog/2013/06/ ...

  9. 再谈加密-RSA非对称加密的理解和使用

    html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...

随机推荐

  1. BZOJ1069 SCOI2007最大土地面积(凸包+旋转卡壳)

    求出凸包,显然四个点在凸包上.考虑枚举某点,再移动另一点作为对角线,容易发现剩下两点的最优位置是单调的.过程类似旋转卡壳. #include<iostream> #include<c ...

  2. Leetcode 191.位1的个数 By Python

    编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 '1' 的个数(也被称为汉明重量). 示例 : 输入: 11 输出: 3 解释: 整数 11 的二进制表示为 00000000000 ...

  3. py3+requests+urllib+bs4+threading,爬取斗图图片

    实现原理及思路请参考我的另外几篇爬虫实践博客 py3+urllib+bs4+反爬,20+行代码教你爬取豆瓣妹子图:http://www.cnblogs.com/UncleYong/p/6892688. ...

  4. poco logging

    http://pocoproject.org/slides/110-Logging.pdf

  5. P3747 相逢是问候 欧拉定理+线段树

    巨难!!! 去年六省联考唯一的一道黑牌题,我今天一天从早到晚,把它从暴力15分怼到了90分,极端接近正解了. bzoj上A了,但是洛谷和loj上面就不行.伪正解会T,奇奇怪怪的类正解会WA.. 那么, ...

  6. 【洛谷P4113】采花 HH的项链+

    题目大意:静态统计序列区间中出现次数大于等于 2 的颜色数. 题解:类似于HH的项链,只需将 i 和 pre[i] 的关系对应到 pre[i] 和 pre[pre[i]] 的关系即可. 代码如下 #i ...

  7. 预测氨基酸替换的致病性及分子机制:MutPred工具的使用

    MutPred的功能是预测氨基酸替换后的致病性及其分子机制,旧版本见链接:http://mutpred1.mutdb.org/ 新版本更新为MutPred2,见网站链接:http://mutpred2 ...

  8. HTML:<input type="text">文本框不可编辑的方式

    1.<input type="text" name="name" value="姓名" disabled /> 该方式显示的文本 ...

  9. nginx 反向代理案例

    server{ listen ssl; server_name a.xxxxx.com; root /home/wwwroot/default/asqumo; ssl_protocols TLSv1. ...

  10. LoadRunner web请求和响应中文乱码解决办法

    先来认识下lr_convert_string_encoding: int lr_convert_string_encoding( const char *sourceString, const cha ...