参考链接: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. Classification with DeepLearning

    分类网络总结 https://github.com/handong1587/handong1587.github.io/blob/master/_posts/deep_learning/2015-10 ...

  2. i3 窗口管理器使 Linux 更美好

    导读 Linux(和一般的开源软件)最美好的一点是自由 —— 可以在不同的替代方案中进行选择以满足我们的需求. 我使用 Linux 已经很长时间了,但我从来没有对可选用的桌面环境完全满意过.直到去年, ...

  3. ceph 安装过程

    安装依赖: yum install -y yum-utils && yum-config-manager --add-repo https://dl.fedoraproject.org ...

  4. BZOJ2002[Hnoi2010]弹飞绵羊——LCT

    题目描述 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏.游戏一开始,Lostmonkey在地上沿着一条直线摆上n个装置,每个装置设定初始弹力系 ...

  5. Zabbix 添加对交换机端口流量超出阈值的监控

    点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 22 Zabbix 添加对交换机端口流量超出阈值的监控 本文主要讲解利用zabbix 添加对交换机 ...

  6. cf860E Arkady and A Nobody-men (树剖)

    容易得出,如果我们按照深度一层一层地做,做完一层后,这层某个点的答案就是它的祖先们的子树大小(统计大小时不包括树根) 由于我太菜了不会别的方法,虽然N是5e5的,还是只好用一个树剖(树状数组降常数)水 ...

  7. 分享一个自己做的SpringMVC的PPT

    分享一个自己做的SpringMVC的PPT,由于比较忙只写了一些重要的部分

  8. A1077. Kuchiguse

    The Japanese language is notorious for its sentence ending particles. Personal preference of such pa ...

  9. MATLAB:图像乘除法运算(immultiply、imdivide函数),同时比较双精度类型图像运算结果

    图像乘除法运算涉及到immultiply.imdivide函数,实现代码如下: 1.图像之间的乘法运算 close all; %关闭当前所有图形窗口,清空工作空间变量,清除工作空间所有变量 clear ...

  10. Visio画UML类图、序列图 for Java

    参考文档: 1.百度搜索: 怎样用Visio 2007画C++类图 连接 https://jingyan.baidu.com/article/9f7e7ec07286e16f281554f7.html ...