分享一个php加密方法,这个方法还比较实用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分享一个php加密方法,这个方法还比较实用相关的知识,希望对你有一定的参考价值。

参考技术A

我们在开发过程中,有的时候GET传值,字符串太长,我们可以用这个方法,在传值之前先调用函数lock_url(加密字符串),加密以后在传递,GET接受以后用函数unlock_url(待解密字符串)进行解密。

如果大家有更好更简单的方法,发评论区我们一起讨论学习!

function lock_url($txt)

$key = \']!L]<_wOzEIs!.f(T[|ZGQaxS":?#`v%EburotLZi"KdKs@QivlJ[PjWw`.wcT\'; //key

$chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-=+";

$nh = rand(0,64);

$ch = $chars[$nh];

$mdKey = md5($key.$ch);

$mdKey = substr($mdKey,$nh%8, $nh%8+7);

$txt = base64_encode($txt);

$tmp = \'\';

$i=0;$j=0;$k = 0;

for ($i=0; $i<strlen($txt); p=""

$k = $k == strlen($mdKey) ? 0 : $k;

$j = ($nh+strpos($chars,$txt[$i])+ord($mdKey[$k++]))%64;

$tmp .= $chars[$j];

return urlencode($ch.$tmp);

//解密函数

function unlock_url($txt)

$key = \']!L]<_wOzEIs!.f(T[|ZGQaxS":?#`v%EburotLZi"KdKs@QivlJ[PjWw`.wcT\';//key

$txt = urldecode($txt);

$chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-=+";

$ch = $txt[0];

$nh = strpos($chars,$ch);

$mdKey = md5($key.$ch);

$mdKey = substr($mdKey,$nh%8, $nh%8+7);

$txt = substr($txt,1);

$tmp = \'\';

$i=0;$j=0; $k = 0;

for ($i=0; $i<strlen($txt); p=""

$k = $k == strlen($mdKey) ? 0 : $k;

$j = strpos($chars,$txt[$i])-$nh - ord($mdKey[$k++]);

while ($j<0) $j+=64;

$tmp .= $chars[$j];

return base64_decode($tmp);

分享几个用 Python 给图片添加水印的方法,简单实用

作者 |俊欣

来源 |关于数据分析与可视化

今天来分享几种可以给图片添加水印的方法,都是十分的简单实用,大家在看了之后也可以私底下去自己试试,有些方法需要的代码量就比较少,有些方法需要的代码量就稍微多一些,那我们开始吧

opencv模块

首先我们用opencv这个库来给图片添加水印,主要用到的函数是cv2.putText()方法,里面共有大概9个参数,当然我们并不需要将这个9个参数统统用到,

下面分别为大家来讲述一下cv2.putText()方法中9个参数的含义,介绍如下:

  • image:印有水印的图片

  • text:水印的具体文字

  • org:水印放置的横纵坐标,(x坐标,y坐标)

  • font、fontScale:水印的字体相关的参数

  • color:水印的颜色

  • thinkness、lineType、bottomLeftOrigin:印有水印的图片相关的设置,线条的粗细哇、线条的样式哇等等

下面我们来看一下具体的代码把

img=cv2.imread("test2.jpg") # 导入我们需要添加水印的图片
RGB_img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
blank_img = np.zeros(shape=(RGB_img.shape[0],RGB_img.shape[1],3), dtype=np.uint8)
font = cv2.FONT_HERSHEY_SIMPLEX
# 添加水印的文字内容
cv2.putText(blank_img,text='Learn Python',org=(40, 90),
            fontFace=font,fontScale= 2,
            color=(255,0,0),thickness=10,lineType=cv2.LINE_4)

然后我们将印有水印的图片和原图进行结合,代码如下

blended = cv2.addWeighted(src1=RGB_img, alpha=0.7,
                          src2=blank_img, beta=1, gamma = 2)
plt.imshow(blended)

出来的结果是这样

PIL模块

PIL是Python的第三方图像处理库,其中Image模块作为PIL库的基本核心类,可以用来例如加载图像和创建新图像等用途,而说到给在图片上添加水印,要用到的方法就是ImageDraw.Draw.text(),里面有包括6个参数,其中经常被用到的也就下面四个

  • xy:添加水印的坐标,x坐标和y坐标

  • text:具体添加水印的文本内容

  • fill、font:具体文本内容的样式、字体大小等等

下面我们来看一下具体的代码长什么样子

im = Image.open('test1.jpg')
draw = ImageDraw.Draw(im)
text = "Learn Python"
# 设置字体、字体大小等等
font = ImageFont.truetype('arial.ttf', 33)
# 添加水印
draw.text((50, 50), text, font=font)
im.show()
# 保存图片
im.save('watermark2.jpg')

出来的结果是这个样子

filestools模块

最后我们要介绍的则是filestools模块,其本质上也是对ImageDraw.Draw.text()方法做了进一步的封装,让我们用起来会更加的简便,对比前者,我们使用add_mark()方法可以生成数量较多的水印,该方法当中里面有8个参数,其中比较重要的几个是

  • mark:水印的文字内容

  • color、size、opacity、space、angle:水印文字的样式包括文字的大小、颜色、透明程度等等

我们现在来看一下具体的代码

from watermarker.marker import add_mark
add_mark(file = "test1.jpg", out = "add_mark_test1.jpg",
         mark = "Python", opacity=0.2, angle=30, space=30)

出来的结果长这个样子

具体采用哪种方法,读者可以自己斟酌地来使用,学习愉快!

资讯

AI被当做炒作工具?

资讯

AI 生成的代码可信吗?

资讯

机器人越像人越好?被盯着会怎样?

资讯

AI不可以作为专利认证发明人

分享

点收藏

点点赞

点在看

以上是关于分享一个php加密方法,这个方法还比较实用的主要内容,如果未能解决你的问题,请参考以下文章

神级程序员带来:用python有证书的加密解密实现方法!

2个比较经典的PHP加密解密函数分享

一个简单不过却很非常实用的PHP加密字符串方法

PHP 加密 和 解密 方法

php7实现基于openssl的加密解密方法

php自定文件保存session的实用方法