一个简单的php算法

<?php

function encrypt($data, $key)

{

$key    =   md5($key);

$x      =   0;

$len    =   strlen($data);

$l      =   strlen($key);

for ($i = 0; $i < $len; $i++) {

if ($x == $l) {

$x = 0;

}

$char .= $key{$x};

$x++;

}

for ($i = 0; $i < $len; $i++) {

$str .= chr(ord($data{$i}) + (ord($char{$i})) % 256);

}

return base64_encode($str);

}

function decrypt($data, $key)

{

$key = md5($key);

$x = 0;

$data = base64_decode($data);

$len = strlen($data);

$l = strlen($key);

for ($i = 0; $i < $len; $i++) {

if ($x == $l) {

$x = 0;

}

$char .= substr($key, $x, 1);

$x++;

}

for ($i = 0; $i < $len; $i++) {

if (ord(substr($data, $i, 1)) < ord(substr($char, $i, 1))) {

$str .= chr((ord(substr($data, $i, 1)) + 256) - ord(substr($char, $i, 1)));

} else {

$str .= chr(ord(substr($data, $i, 1)) - ord(substr($char, $i, 1)));

}

}

return $str;

}

$data = ‘PHP加密解密算法‘;        // 被加密信息

$key = ‘123‘;                   // 密钥

$encrypt = encrypt($data, $key);

$decrypt = decrypt($encrypt, $key);

echo $encrypt, "\n", $decrypt;

时间: 2024-08-27 08:01:09

一个简单的php算法的相关文章

Linux GCC下strstr的实现以及一个简单的Kmp算法的接口

今天做了一道题,要用判断一个字符串是否是另一个字符串的子串,于是查了一下strstr的实现. 代码如下: 1 char *strstr(const char*s1,const char*s2) 2 { 3 const char*p=s1; 4 const size_t len=strlen(s2); 5 for(;(p=strchr(p,*s2))!=0;p++) 6 { 7 if(strncmp(p,s2,len)==0) 8 return (char*)p; 9 } 10 return(0)

初学javascript,写一个简单的阶乘算法当作练习

代码如下: <script> var a = prompt("请输入值"); function mul(a){ if(a==1){ return 1; } return a*mul(a-1); } document.write(mul(a)); </script> 执行: 原文地址:https://www.cnblogs.com/raonet/p/10339704.html

一个简单算法题引发的思考&lt;DNA sorting&gt;(about cin/template/new etc)

首先是昨天在北京大学oj网上看到一个简单的算法题目,虽然简单,但是如何完成一段高效.简洁.让人容易看懂的代码对于我这个基础不好,刚刚进入计算机行业的小白来说还是有意义的.而且在写代码的过程中,会发现自己平时学习中不会发现的问题,所以想写下这个博客,主要是便于自己对算法的理解. 来,上题. DNA Sorting Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 91599   Accepted: 36781 Descript

一个简单的伪随机数发生算法(转)

源:一个简单的伪随机数发生算法 //此代码纯属交流目的,如用作安全领域,后果自负 #include <stdint.h> #include <stdlib.h> //! \brief random seed static uint16_t s_hwRandomSeed = 0xAA55; static uint8_t s_chRandomTable[] = { 0x12,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF, 0xF1,0xE2,0xD3,0xC4,

关于apriori算法的一个简单的例子

apriori算法是关联规则挖掘中很基础也很经典的一个算法,我认为很多教程出现大堆的公式不是很适合一个初学者理解.因此,本文列举一个简单的例子来演示下apriori算法的整个步骤. 下面这个表格是代表一个事务数据库D,其中最小支持度为50%,最小置信度为70%,求事务数据库中的频繁关联规则. Tid 项目集 1  面包,牛奶,啤酒,尿布 2  面包,牛奶,啤酒 3  啤酒,尿布 4  面包,牛奶,花生 apriori算法的步骤如下所示: (1)生成候选频繁1-项目集C1={{面包},{牛奶},{

如何写一个简单的手写识别算法?

gesture recognizer 是比较好的解法. 洒家也有一个类似的算法,借鉴了原始手写ocr的思路来实现的.其实是写在 $1 gesture recognizer 之前的,但没有 $1 gesture recognizer 归纳得好,作者jacob还是我偶像. Realtime Gesture recognition 把所有的笔画定义了个8个方向,然后将B的笔画可以分解成一个字符串.然后当人在触摸屏上画出一个符号时,也将它分解成8个方向的字符串,最后比较两个字符串的距离就能判断出和不同符

poj水题-1001 一个简单的大数乘幂算法实现

说到底就是一个大数乘幂运算,小数点后零.明白大数乘幂算法直接搞. 这里就有几个问题: 1.幂位数小可以用二进制容器表示(取模更好,但我是为了练习STL) 2.n位大数用string表示,外加一个int型表示小数点位置 3.字符串×字符串用小学竖式乘法算法就行,注意补零.位数多时两个string两个string地加. 代码长,但理解容易,大数乘法,加法函数很多都能重用. 1 #include <iostream> 2 #include <vector> 3 #include <

一个简单的算法,定义一个长度为n的数组,随机顺序存储1至n的的全部正整数,不重复。

前些天看到.net笔试习题集上的一道小题,要求将1至100内的正整数随机填充到一个长度为100的数组,求一个简单的算法. 今天有空写了一下.代码如下,注释比较详细: 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Text.RegularExpressions; 6 7 namespace TestNumber 8 { 9 cl

由一个简单算法想到的程序员素养问题

题记:五月从帝都回到武汉,旅游半个月后开始找新工作,六月选择了一家华中地区为数不多的移动互联网公司入职至今,略有感触——比较帝都码农与武汉码农的平均水平,就跟两个城市的经济发展水平差异一样大,不是说武汉这边没有优秀的程序员(我也算半个嘛),而是说平均水平确实不如其他一线城市.想想也正常,巨头公司都扎堆北上广深,以极具竞争力的薪酬福利和巨头光环吸引着广大程序员,反观武汉的互联网发展尚处在初级阶段,无论从公司规模.名气还是最实际的薪酬福利方面均不如一线城市,自然无法吸引广大程序员咯.本人在新公司待了