通知设置 新通知
PHP实现RSA加密解密
PHP • zkbhj 发表了文章 • 0 个评论 • 1508 次浏览 • 2017-06-16 10:25
class Someet
{
//加密方法 $data 加密字符串
public static function getencrypt($data){
// 公钥加密
$encrypt_data = '';
//获取公钥
$pubkey = openssl_pkey_get_public(file_get_contents('someet_pub.key'));
openssl_public_encrypt($data, $encrypt_data, $pubkey);
$encrypt_data = base64_encode($encrypt_data);
return $encrypt_data;
}
//解密方法 $encrypt_data 获取的加密后的字符串
public static function getdecrypt($encrypt_data)
{
//把解密的字符串里的,空格转换为+号
$encrypt_data = str_replace(' ','+', $encrypt_data);
// 私钥解密
$prikey = openssl_pkey_get_private(file_get_contents('someet.key'));
$encrypt_data = base64_decode($encrypt_data);
openssl_private_decrypt($encrypt_data, $decrypt_data, $prikey);
return $decrypt_data;
}
}
//使用
$sommet = new Someet();
//加密
$encrypt = $sommet->getencrypt($encryptkey);
//解密
$decrypt = $sommet->getdecrypt($decryptkey);
RSA的加密解密,对加密串的格式要求非常严格,不同语言,像Java,.net 加密输出的串,到达php页面,会出现加号被转成空格的情况,因为php get 会默认执行一遍 urldecode, 而urldecode 会把加号转为空格,从而导致整个加密串发生了变化,所以解密不出来。
生成公钥、私钥对,私钥加密的内容能通过公钥解密(反过来亦可以)
下载开源RSA密钥生成工具openssl(通常Linux系统都自带该程序),解压缩至独立的文件夹,进入其中的bin目录,执行以下命令:openssl genrsa -out rsa_private_key.pem 1024
openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt -out private_key.pem
openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
第一条命令生成原始 RSA私钥文件 rsa_private_key.pem,第二条命令将原始 RSA私钥转换为 pkcs8格式,第三条生成RSA公钥 rsa_public_key.pem
从上面看出通过私钥能生成对应的公钥,因此我们将私钥private_key.pem用在服务器端,公钥发放给Android跟iOS等前端。 查看全部
{
//加密方法 $data 加密字符串
public static function getencrypt($data){
// 公钥加密
$encrypt_data = '';
//获取公钥
$pubkey = openssl_pkey_get_public(file_get_contents('someet_pub.key'));
openssl_public_encrypt($data, $encrypt_data, $pubkey);
$encrypt_data = base64_encode($encrypt_data);
return $encrypt_data;
}
//解密方法 $encrypt_data 获取的加密后的字符串
public static function getdecrypt($encrypt_data)
{
//把解密的字符串里的,空格转换为+号
$encrypt_data = str_replace(' ','+', $encrypt_data);
// 私钥解密
$prikey = openssl_pkey_get_private(file_get_contents('someet.key'));
$encrypt_data = base64_decode($encrypt_data);
openssl_private_decrypt($encrypt_data, $decrypt_data, $prikey);
return $decrypt_data;
}
}
//使用
$sommet = new Someet();
//加密
$encrypt = $sommet->getencrypt($encryptkey);
//解密
$decrypt = $sommet->getdecrypt($decryptkey);
RSA的加密解密,对加密串的格式要求非常严格,不同语言,像Java,.net 加密输出的串,到达php页面,会出现加号被转成空格的情况,因为php get 会默认执行一遍 urldecode, 而urldecode 会把加号转为空格,从而导致整个加密串发生了变化,所以解密不出来。
生成公钥、私钥对,私钥加密的内容能通过公钥解密(反过来亦可以)
下载开源RSA密钥生成工具openssl(通常Linux系统都自带该程序),解压缩至独立的文件夹,进入其中的bin目录,执行以下命令:openssl genrsa -out rsa_private_key.pem 1024
openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt -out private_key.pem
openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
第一条命令生成原始 RSA私钥文件 rsa_private_key.pem,第二条命令将原始 RSA私钥转换为 pkcs8格式,第三条生成RSA公钥 rsa_public_key.pem
从上面看出通过私钥能生成对应的公钥,因此我们将私钥private_key.pem用在服务器端,公钥发放给Android跟iOS等前端。 查看全部
class SomeetRSA的加密解密,对加密串的格式要求非常严格,不同语言,像Java,.net 加密输出的串,到达php页面,会出现加号被转成空格的情况,因为php get 会默认执行一遍 urldecode, 而urldecode 会把加号转为空格,从而导致整个加密串发生了变化,所以解密不出来。
{
//加密方法 $data 加密字符串
public static function getencrypt($data){
// 公钥加密
$encrypt_data = '';
//获取公钥
$pubkey = openssl_pkey_get_public(file_get_contents('someet_pub.key'));
openssl_public_encrypt($data, $encrypt_data, $pubkey);
$encrypt_data = base64_encode($encrypt_data);
return $encrypt_data;
}
//解密方法 $encrypt_data 获取的加密后的字符串
public static function getdecrypt($encrypt_data)
{
//把解密的字符串里的,空格转换为+号
$encrypt_data = str_replace(' ','+', $encrypt_data);
// 私钥解密
$prikey = openssl_pkey_get_private(file_get_contents('someet.key'));
$encrypt_data = base64_decode($encrypt_data);
openssl_private_decrypt($encrypt_data, $decrypt_data, $prikey);
return $decrypt_data;
}
}
//使用
$sommet = new Someet();
//加密
$encrypt = $sommet->getencrypt($encryptkey);
//解密
$decrypt = $sommet->getdecrypt($decryptkey);
生成公钥、私钥对,私钥加密的内容能通过公钥解密(反过来亦可以)
下载开源RSA密钥生成工具openssl(通常Linux系统都自带该程序),解压缩至独立的文件夹,进入其中的bin目录,执行以下命令:
openssl genrsa -out rsa_private_key.pem 1024
openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt -out private_key.pem
openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
第一条命令生成原始 RSA私钥文件 rsa_private_key.pem,第二条命令将原始 RSA私钥转换为 pkcs8格式,第三条生成RSA公钥 rsa_public_key.pem
从上面看出通过私钥能生成对应的公钥,因此我们将私钥private_key.pem用在服务器端,公钥发放给Android跟iOS等前端。
【读书笔记】《高性能PHP7》
读书笔记 • zkbhj 发表了文章 • 0 个评论 • 1661 次浏览 • 2017-06-12 13:28
所读书籍:《高性能PHP7》
开始时间:2017年6月12日
预计结束时间:2017年6月25日
读书笔记Day1:
第一章讲述了如何在windows、Linux等操作系统上安装PHP7开发所需要的工具,如Nginx、PHP7、Mysql等,略读一下即过即可,如果是入门的朋友,可以按照上面的流程操作一次即可。
第二章开始详细讲述PHP7的新特新。
PHP7提供了一些OOP特性
1、类型声明
PHP7中引入了类型声明,目前明确的两类变量可以声明类型:形参和返回值。
支持的形参类型声明的类型有整形、浮点型、字符串型、布尔类型。可以用在函数形参和对象方法上。代码示例:class Person
{
public function age(int $age) : int
{
return $age;
}
public function name(string $name) : string
{
return $name;
}
public function isAlive(bool $alive) : bool
{
return $alive;
}
}
情况下,形参类型声明不是被完全限制的,不过可以使用如下方式进行强制限制:declare( strict_type = 1 )在有返回值声明时,仅接受所声明类型的数据。
使用类型声明的好处是,可以让函数、方法的形参和返回值有所预期,避免出现不必要的数据传递,从而造成错误,而且使代码更清晰,可读性更高。
2、命名空间与use关键字批量声明
三种使用类、方法和常量的方式//Class
$book = new Publishers\Packt\Book();
//Function
echo Publishers/Packt/getBook();
//constants
echo Publishers\Packt\COUNT;//Class
use Publishers\Packt\Book;
//Function
use function Publishers\Packt\getBook;
//const
use const Publishers\Packt\COUNT
$book = new Book();
echo getBook();
echo COUNT;第三种方式就是PHP7中新引入的方式,批量的use声明,有三种模式:
非混合模式的use声明、混合模式的use声明和复合模式的use声明。//非混合模式的use声明
//Class
use Publishers\Packt\{ Book, Ebook, Video}
//Function
use function Publishers\Packt\{ getBook, saveBook}
//const
use const Publishers\Packt\{COUNT , KEY}//混合模式的use声明
//Class
use Publishers\Packt\{
Book,
Ebook,
Video,
function getBook,
function saveBook,
const COUNT,
const KEY
}
//复合模式的use声明
use Publishers\Packt\{
Paper\Book,
Electronic\Ebook,
Media\Video
}3、匿名类:
匿名类的声明和使用是同时进行的,具备其他类的所有功能,没有类名。
参数可以直接设置在匿名类中当作构造函数的参数。
匿名类可以继承父类及父类的 方法,也可以继承接口。
匿名类可以嵌套在一个类中使用。 查看全部
开始时间:2017年6月12日
预计结束时间:2017年6月25日
读书笔记Day1:
第一章讲述了如何在windows、Linux等操作系统上安装PHP7开发所需要的工具,如Nginx、PHP7、Mysql等,略读一下即过即可,如果是入门的朋友,可以按照上面的流程操作一次即可。
第二章开始详细讲述PHP7的新特新。
PHP7提供了一些OOP特性
1、类型声明
PHP7中引入了类型声明,目前明确的两类变量可以声明类型:形参和返回值。
支持的形参类型声明的类型有整形、浮点型、字符串型、布尔类型。可以用在函数形参和对象方法上。代码示例:class Person
{
public function age(int $age) : int
{
return $age;
}
public function name(string $name) : string
{
return $name;
}
public function isAlive(bool $alive) : bool
{
return $alive;
}
}
情况下,形参类型声明不是被完全限制的,不过可以使用如下方式进行强制限制:declare( strict_type = 1 )在有返回值声明时,仅接受所声明类型的数据。
使用类型声明的好处是,可以让函数、方法的形参和返回值有所预期,避免出现不必要的数据传递,从而造成错误,而且使代码更清晰,可读性更高。
2、命名空间与use关键字批量声明
三种使用类、方法和常量的方式//Class
$book = new Publishers\Packt\Book();
//Function
echo Publishers/Packt/getBook();
//constants
echo Publishers\Packt\COUNT;//Class
use Publishers\Packt\Book;
//Function
use function Publishers\Packt\getBook;
//const
use const Publishers\Packt\COUNT
$book = new Book();
echo getBook();
echo COUNT;第三种方式就是PHP7中新引入的方式,批量的use声明,有三种模式:
非混合模式的use声明、混合模式的use声明和复合模式的use声明。//非混合模式的use声明
//Class
use Publishers\Packt\{ Book, Ebook, Video}
//Function
use function Publishers\Packt\{ getBook, saveBook}
//const
use const Publishers\Packt\{COUNT , KEY}//混合模式的use声明
//Class
use Publishers\Packt\{
Book,
Ebook,
Video,
function getBook,
function saveBook,
const COUNT,
const KEY
}
//复合模式的use声明
use Publishers\Packt\{
Paper\Book,
Electronic\Ebook,
Media\Video
}3、匿名类:
匿名类的声明和使用是同时进行的,具备其他类的所有功能,没有类名。
参数可以直接设置在匿名类中当作构造函数的参数。
匿名类可以继承父类及父类的 方法,也可以继承接口。
匿名类可以嵌套在一个类中使用。 查看全部
所读书籍:《高性能PHP7》
开始时间:2017年6月12日
预计结束时间:2017年6月25日
读书笔记Day1:
第一章讲述了如何在windows、Linux等操作系统上安装PHP7开发所需要的工具,如Nginx、PHP7、Mysql等,略读一下即过即可,如果是入门的朋友,可以按照上面的流程操作一次即可。
第二章开始详细讲述PHP7的新特新。
PHP7提供了一些OOP特性
1、类型声明
PHP7中引入了类型声明,目前明确的两类变量可以声明类型:形参和返回值。
支持的形参类型声明的类型有整形、浮点型、字符串型、布尔类型。可以用在函数形参和对象方法上。代码示例:
情况下,形参类型声明不是被完全限制的,不过可以使用如下方式进行强制限制:
使用类型声明的好处是,可以让函数、方法的形参和返回值有所预期,避免出现不必要的数据传递,从而造成错误,而且使代码更清晰,可读性更高。
2、命名空间与use关键字批量声明
三种使用类、方法和常量的方式
非混合模式的use声明、混合模式的use声明和复合模式的use声明。
匿名类的声明和使用是同时进行的,具备其他类的所有功能,没有类名。
参数可以直接设置在匿名类中当作构造函数的参数。
匿名类可以继承父类及父类的 方法,也可以继承接口。
匿名类可以嵌套在一个类中使用。
开始时间:2017年6月12日
预计结束时间:2017年6月25日
读书笔记Day1:
第一章讲述了如何在windows、Linux等操作系统上安装PHP7开发所需要的工具,如Nginx、PHP7、Mysql等,略读一下即过即可,如果是入门的朋友,可以按照上面的流程操作一次即可。
第二章开始详细讲述PHP7的新特新。
PHP7提供了一些OOP特性
1、类型声明
PHP7中引入了类型声明,目前明确的两类变量可以声明类型:形参和返回值。
支持的形参类型声明的类型有整形、浮点型、字符串型、布尔类型。可以用在函数形参和对象方法上。代码示例:
class Person
{
public function age(int $age) : int
{
return $age;
}
public function name(string $name) : string
{
return $name;
}
public function isAlive(bool $alive) : bool
{
return $alive;
}
}
情况下,形参类型声明不是被完全限制的,不过可以使用如下方式进行强制限制:
declare( strict_type = 1 )在有返回值声明时,仅接受所声明类型的数据。
使用类型声明的好处是,可以让函数、方法的形参和返回值有所预期,避免出现不必要的数据传递,从而造成错误,而且使代码更清晰,可读性更高。
2、命名空间与use关键字批量声明
三种使用类、方法和常量的方式
//Class
$book = new Publishers\Packt\Book();
//Function
echo Publishers/Packt/getBook();
//constants
echo Publishers\Packt\COUNT;
//Class第三种方式就是PHP7中新引入的方式,批量的use声明,有三种模式:
use Publishers\Packt\Book;
//Function
use function Publishers\Packt\getBook;
//const
use const Publishers\Packt\COUNT
$book = new Book();
echo getBook();
echo COUNT;
非混合模式的use声明、混合模式的use声明和复合模式的use声明。
//非混合模式的use声明
//Class
use Publishers\Packt\{ Book, Ebook, Video}
//Function
use function Publishers\Packt\{ getBook, saveBook}
//const
use const Publishers\Packt\{COUNT , KEY}
//混合模式的use声明
//Class
use Publishers\Packt\{
Book,
Ebook,
Video,
function getBook,
function saveBook,
const COUNT,
const KEY
}
//复合模式的use声明3、匿名类:
use Publishers\Packt\{
Paper\Book,
Electronic\Ebook,
Media\Video
}
匿名类的声明和使用是同时进行的,具备其他类的所有功能,没有类名。
参数可以直接设置在匿名类中当作构造函数的参数。
匿名类可以继承父类及父类的 方法,也可以继承接口。
匿名类可以嵌套在一个类中使用。
PHP大会笔记:PHP安全开发,从白帽角度做安全
会议 • zkbhj 发表了文章 • 0 个评论 • 1870 次浏览 • 2017-06-11 15:25
演讲大纲WEb安全现状
常见漏洞分析
如何提升系统安全性
安全案例
案例一:17岁小孩儿黑产月入8000+?QQ线报群。
案例二:对公网开放3306端口的服务器数量是180万之多。
WEB漏洞的特征
常规漏洞、逻辑漏洞、第三方通用漏洞
常规漏洞:代码注入、文件包含、CSRF、SQL注入、XSS跨站、脚本
本地文件包含漏洞
远程文件包含龙洞
避免?
open_basedir限制活动范围
过滤点斜杠反斜杠
禁止服务器远程包含文件
PHP代码注入如何防范?
不要把参数直接存储位可以运行的代码
尽量不要使用eval执行接收的参数
PHP安全开发扩展Taint,会提示未对入餐进行校验的部分进行warning提示
常规漏洞的特点
参数过滤不严谨
可以通过扫描器扫描出来
代码层面的bug
业务逻辑漏洞
验证码突破
业务授权安全
业务流程扰乱等
业务逻辑漏洞案例
平行越权漏洞案例:A能看到B的订单信息
垂直越权漏洞案例:普通用户进入管理员后台
越权逻辑漏洞防范
前后台的查询尽量不用同一个查询接口
尽量不要暴露出连续ID如订单号
越权不仅限于展示,修改数据也会出现
通用型漏洞:第三方开源系统的漏洞
如何防范漏洞?
SDL:安全开发生命周期,来自如微软,用于office和Windows之后,安全漏洞减少。
提升web应用的安全性,减少应用的安全漏洞数量
降低安全漏洞的修复成本
PPT下载:https://github.com/devlinkcn/ppts_for_php2017/blob/master/PHP%E5%AE%89%E5%85%A8%E5%BC%80%E5%8F%91_%E4%BB%8E%E7%99%BD%E5%B8%BD%E8%A7%92%E5%BA%A6%E5%81%9A%E5%AE%89%E5%85%A8--%E6%B1%A4%E9%9D%92%E6%9D%BE.pdf
查看全部
常见漏洞分析
如何提升系统安全性
安全案例
案例一:17岁小孩儿黑产月入8000+?QQ线报群。
案例二:对公网开放3306端口的服务器数量是180万之多。
WEB漏洞的特征
常规漏洞、逻辑漏洞、第三方通用漏洞
常规漏洞:代码注入、文件包含、CSRF、SQL注入、XSS跨站、脚本
本地文件包含漏洞
远程文件包含龙洞
避免?
open_basedir限制活动范围
过滤点斜杠反斜杠
禁止服务器远程包含文件
PHP代码注入如何防范?
不要把参数直接存储位可以运行的代码
尽量不要使用eval执行接收的参数
PHP安全开发扩展Taint,会提示未对入餐进行校验的部分进行warning提示
常规漏洞的特点
参数过滤不严谨
可以通过扫描器扫描出来
代码层面的bug
业务逻辑漏洞
验证码突破
业务授权安全
业务流程扰乱等
业务逻辑漏洞案例
平行越权漏洞案例:A能看到B的订单信息
垂直越权漏洞案例:普通用户进入管理员后台
越权逻辑漏洞防范
前后台的查询尽量不用同一个查询接口
尽量不要暴露出连续ID如订单号
越权不仅限于展示,修改数据也会出现
通用型漏洞:第三方开源系统的漏洞
如何防范漏洞?
SDL:安全开发生命周期,来自如微软,用于office和Windows之后,安全漏洞减少。
提升web应用的安全性,减少应用的安全漏洞数量
降低安全漏洞的修复成本
PPT下载:https://github.com/devlinkcn/ppts_for_php2017/blob/master/PHP%E5%AE%89%E5%85%A8%E5%BC%80%E5%8F%91_%E4%BB%8E%E7%99%BD%E5%B8%BD%E8%A7%92%E5%BA%A6%E5%81%9A%E5%AE%89%E5%85%A8--%E6%B1%A4%E9%9D%92%E6%9D%BE.pdf
查看全部
演讲大纲WEb安全现状
常见漏洞分析
如何提升系统安全性
安全案例
案例一:17岁小孩儿黑产月入8000+?QQ线报群。
案例二:对公网开放3306端口的服务器数量是180万之多。
WEB漏洞的特征
常规漏洞、逻辑漏洞、第三方通用漏洞
常规漏洞:代码注入、文件包含、CSRF、SQL注入、XSS跨站、脚本
本地文件包含漏洞
远程文件包含龙洞
避免?
open_basedir限制活动范围
过滤点斜杠反斜杠
禁止服务器远程包含文件
PHP代码注入如何防范?
不要把参数直接存储位可以运行的代码
尽量不要使用eval执行接收的参数
PHP安全开发扩展Taint,会提示未对入餐进行校验的部分进行warning提示
常规漏洞的特点
参数过滤不严谨
可以通过扫描器扫描出来
代码层面的bug
业务逻辑漏洞
验证码突破
业务授权安全
业务流程扰乱等
业务逻辑漏洞案例
平行越权漏洞案例:A能看到B的订单信息
垂直越权漏洞案例:普通用户进入管理员后台
越权逻辑漏洞防范
前后台的查询尽量不用同一个查询接口
尽量不要暴露出连续ID如订单号
越权不仅限于展示,修改数据也会出现
通用型漏洞:第三方开源系统的漏洞
如何防范漏洞?
SDL:安全开发生命周期,来自如微软,用于office和Windows之后,安全漏洞减少。
提升web应用的安全性,减少应用的安全漏洞数量
降低安全漏洞的修复成本
PPT下载:https://github.com/devlinkcn/ppts_for_php2017/blob/master/PHP%E5%AE%89%E5%85%A8%E5%BC%80%E5%8F%91_%E4%BB%8E%E7%99%BD%E5%B8%BD%E8%A7%92%E5%BA%A6%E5%81%9A%E5%AE%89%E5%85%A8--%E6%B1%A4%E9%9D%92%E6%9D%BE.pdf
常见漏洞分析
如何提升系统安全性
安全案例
案例一:17岁小孩儿黑产月入8000+?QQ线报群。
案例二:对公网开放3306端口的服务器数量是180万之多。
WEB漏洞的特征
常规漏洞、逻辑漏洞、第三方通用漏洞
常规漏洞:代码注入、文件包含、CSRF、SQL注入、XSS跨站、脚本
本地文件包含漏洞
远程文件包含龙洞
避免?
open_basedir限制活动范围
过滤点斜杠反斜杠
禁止服务器远程包含文件
PHP代码注入如何防范?
不要把参数直接存储位可以运行的代码
尽量不要使用eval执行接收的参数
PHP安全开发扩展Taint,会提示未对入餐进行校验的部分进行warning提示
常规漏洞的特点
参数过滤不严谨
可以通过扫描器扫描出来
代码层面的bug
业务逻辑漏洞
验证码突破
业务授权安全
业务流程扰乱等
业务逻辑漏洞案例
平行越权漏洞案例:A能看到B的订单信息
垂直越权漏洞案例:普通用户进入管理员后台
越权逻辑漏洞防范
前后台的查询尽量不用同一个查询接口
尽量不要暴露出连续ID如订单号
越权不仅限于展示,修改数据也会出现
通用型漏洞:第三方开源系统的漏洞
如何防范漏洞?
SDL:安全开发生命周期,来自如微软,用于office和Windows之后,安全漏洞减少。
提升web应用的安全性,减少应用的安全漏洞数量
降低安全漏洞的修复成本
PPT下载:https://github.com/devlinkcn/ppts_for_php2017/blob/master/PHP%E5%AE%89%E5%85%A8%E5%BC%80%E5%8F%91_%E4%BB%8E%E7%99%BD%E5%B8%BD%E8%A7%92%E5%BA%A6%E5%81%9A%E5%AE%89%E5%85%A8--%E6%B1%A4%E9%9D%92%E6%9D%BE.pdf
PHP大会笔记:Swoole2.0原生协程高性能开发实践
会议 • zkbhj 发表了文章 • 0 个评论 • 1983 次浏览 • 2017-06-11 13:34
Swoole2.0原生携程探索经验
PHP的并发IO之路
Yield携程
Yield问题
原生协程
Swoole小而美,
提供异步的IO高性能
原生携程能力
通用原子能力封装
连接池
频率监测
过载保护
服务监控
QQ看点优化经验分享
查看全部
PHP的并发IO之路
Yield携程
Yield问题
原生协程
Swoole小而美,
提供异步的IO高性能
原生携程能力
通用原子能力封装
连接池
频率监测
过载保护
服务监控
QQ看点优化经验分享
查看全部
PHP大会笔记:云原生的MySQL 托管服务架构及读写分离的优化
会议 • zkbhj 发表了文章 • 0 个评论 • 1671 次浏览 • 2017-06-11 13:07
DevOps 开发工程师运维
云原生的MySQL PaaS服务:高可用高可靠
云原生的MySQL PaaS服务:高可用高可靠