参考链接: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. Luogu4609 FJOI2016建筑师(斯特林数)

    显然排列中的最大值会将排列分成所能看到的建筑不相关的两部分.对于某一边,将所能看到的建筑和其遮挡的建筑看成一个集合.显然这个集合内最高的要排在第一个,而剩下的建筑可以随便排列,这相当于一个圆排列.同时 ...

  2. BZOJ2124 等差子序列(树状数组+哈希)

    容易想到一种暴力的做法:枚举中间的位置,设该位置权值为x,如果其两边存在权值关于x对称即合法. 问题是如何快速寻找这个东西是否存在.考虑仅将该位置左边出现的权值标1.那么若在值域上若关于x对称的两权值 ...

  3. 睡前小dp-poj1276-多重背包+二进制优化

    http://poj.org/problem?id=1276 简单的多重背包,不过需要优化一下才能过.网上还有暴力的做法. 二进制优化在背包九讲里讲的比较清楚.对于多重背包的每一件物品,使用二进制的形 ...

  4. Jquery 行选中背景色

    直接上代码: 懒得以后网上在查了,拷贝直接可用 Style: .tbSelectCss { background-color:#d5f4fe; } Html: <table name=" ...

  5. [luogu3801]红色的幻想乡

    题目描述 经过上次失败后,蕾米莉亚决定再次发动红雾异变,但为了防止被灵梦退治,她决定将红雾以奇怪的阵势释放. 我们将幻想乡看做是一个n*m的方格地区,一开始没有任何一个地区被红雾遮盖.蕾米莉亚每次站在 ...

  6. 【转】cJSON 源码分析

    cJSON源码分析 简介 由于C语言汇总,没有直接的字典,字符串数组等数据结构,所以要借助结构体定义,处理json. JSON是一种轻量级的数据交换格式.JSON采用完全独立与语言的文本格式,易于人阅 ...

  7. docker的网络模式

    记性不好,回顾一下.按照惯例,直接看官文. Docker's networking subsystem is pluggable, using drivers. Several drivers exi ...

  8. Announcing WebKit SDL port

    转自:http://www.dorothybrowser.com/announcing-webkit-sdl-port/ 下载地址 https://gitorious.org/spiegel/webk ...

  9. C++中const关键字的使用方法,烦透了一遍一遍的搜,总结一下,加深印象!!!

    之前一直在学习C/C++,关于const的使用,这里出现一点,那里出现一点.知识用时方恨少,这一段时间正好各种笔试题,其中关于const的用法也是层出不穷,所以疲于在书本上各种翻,这里汇总一下,加深自 ...

  10. 线程的同步(协调)synchronized

    [格式] 同步代码块:synchronized(Object){...} 关键字在代码块前,每次只允许一个线程调用此代码块. Object为任何对象(一般用this),每个对象都有一个标志位(0锁住状 ...