php可逆加密代码:

参数一:要加密的文本

参数二:密码

function yanzheng_jiami($data, $key){
    $key    =    md5($key);
    $x        =    0;
    $len    =    strlen($data);
    $l        =    strlen($key);
	 $char="";
	 $str="";
    for ($i = 0; $i < $len; $i++){
        if ($x == $l) {
            $x = 0;
        }
        $char .= $key{$x};
        $x++;
    }
    for ($i = 0; $i < $len; $i++) {
		$str.=ord($data{$i})-ord($char{$i}).',';/*用于分割密文的分割符,必须与解密里的一致*/
    }
    return $str;
}

php解密算法

function jiemi($data, $key){
	$data=substr($data,0,strlen($data)-strlen(','));/*用于分割密文的分割符,必须与加密里的一致*/
	$array=explode(",",$data);
	$md5=md5($key);
	while (strlen($md5)<count($array)){
	$md5=$md5.md5($key);
	}
	$str="";
	$md5=substr($md5,0,count($array));
	for ($i=0; $i<count($array); $i++){
		$code=(int)$array[$i] + (int)ord($md5{$i});
		$str.=chr($code);
	}
	return $str;
}


易语言加密算法(与上方php加密结果一样): 可以互相通用

.版本 2
.支持库 commobj
.支持库 dp1

.子程序 php加密文本, 文本型, 公开, 与php加密一致的一种算法
.参数 原文, 文本型
.参数 密码, 文本型
.参数 网页是否utf8, 逻辑型, 可空
.局部变量 原文长度, 整数型
.局部变量 key, 文本型
.局部变量 密, 文本型
.局部变量 i, 整数型
.局部变量 原文字符, 整数型
.局部变量 密文字符, 整数型
.局部变量 对象, 快速文本对象

.如果真 (是否为空 (网页是否utf8))
    网页是否utf8 = 真
.如果真结束

.如果 (网页是否utf8)
    key = 取数据摘要 (到字节集 (编码_gb2312到utf8 (密码)))
    原文 = 编码_gb2312到utf8 (原文)
.否则
    key = 取数据摘要 (到字节集 (密码))
.如果结束

原文长度 = 取文本长度 (原文)
.判断循环首 (取文本长度 (密) < 原文长度)
    密 = 密 + key
.判断循环尾 ()
密 = 取文本左边 (密, 原文长度)
对象.置文本 (“”)
.计次循环首 (原文长度, i)
    原文字符 = 取字节集数据 (到字节集 (取文本中间 (原文, i, 1)), 3, )
    密文字符 = 取字节集数据 (到字节集 (取文本中间 (密, i, 1)), 3, )
    对象.添加 (到文本 (原文字符 - 密文字符), “F”)
.计次循环尾 ()
返回 (对象.取文本 (, ))

易语言解密算法:可以解密上方 php加密的文本和易语言加密的文本

.版本 2
.支持库 commobj
.支持库 dp1

.子程序 解密用户数据, 文本型, 公开
.参数 密文, 文本型
.参数 密码, 文本型
.局部变量 key, 文本型
.局部变量 对象, 快速文本对象
.局部变量 array, 文本型, , "0"
.局部变量 密, 文本型
.局部变量 字节2, 字节集
.局部变量 i, 整数型
.局部变量 字节2数字, 整数型

key = 取数据摘要 (到字节集 (密码))
对象.置文本 (密文)
array = 对象.分割文本 (“,”, )
.判断循环首 (取文本长度 (密) < 取数组成员数 (array))
    密 = 密 + key
.判断循环尾 ()
密 = 取文本左边 (密, 取数组成员数 (array))
对象.清除文本 ()
.计次循环首 (取数组成员数 (array), i)
    字节2 = 到字节集 (取文本中间 (密, i, 1))
    字节2数字 = 到整数 (取字节集数据 (字节2, 1, ))
    对象.添加 (字符 (到数值 (array [i]) + 字节2数字))
.计次循环尾 ()
返回 (对象.取文本 (, ))

C#解密算法

//using System.Security.Cryptography; //MD5 加密需要引入这个

        public static string GetMD5(string str)
        {
            MD5 md5 = MD5.Create();
            byte[] bin = Encoding.Default.GetBytes(str);
            byte[] md5buffer = md5.ComputeHash(bin);
            string md5str = "";
            for (int i = 0; i < md5buffer.Length; i++)
            { md5str += md5buffer[i].ToString("X2"); }
            return md5str;
        }
        public static string 解密数据(string 密文,string 密码)
        {
            密文 = 密文.Remove(密文.Length - 1);
            string key = GetMD5(密码).ToLower();
            string 密 = "";

            string[] array = 密文.Split(',');
            while (密.Length < array.Length){
                密 = 密 + key;
            }
            密 = 密.Remove(array.Length);
            char[] charArr = new char[array.Length];
            for (int i = 0; i < array.Length; i++){

                byte[] 字节2 = Encoding.Default.GetBytes(密.Substring(i, 1));
                int x = Convert.ToInt32(字节2[0]) + Convert.ToInt32(array[i]);
                charArr[i] = Convert.ToChar(x);

            }
            string 结果 = new string(charArr);
            return 结果;
        }