在线php md5,md5.php

header("Content-Type: text/html; charset=utf-8");

include "./common.php";

//非常给力的authcode加密函数,Discuz!经典代码(带详解)

//函数authcode($string, $operation, $key, $expiry)中的$string:字符串,明文或密文;$operation:DECODE表示解密,其它表示加密;$key:密匙;$expiry:密文有效期。

function authcode($string , $operation = 'DECODE' , $key = '' , $expiry = 0) {

// 动态密匙长度,相同的明文会生成不同密文就是依靠动态密匙

$ckey_length = 4;

// 密匙

$key = md5($key ? $key : $GLOBALS['discuz_auth_key']);

// 密匙a会参与加解密

$keya = md5(substr($key , 0 , 16));

// 密匙b会用来做数据完整性验证

$keyb = md5(substr($key , 16 , 16));

// 密匙c用于变化生成的密文

$keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string , 0 , $ckey_length) : substr(md5(microtime()) , - $ckey_length)) : '';

// 参与运算的密匙

$cryptkey = $keya . md5($keya . $keyc);

$key_length = strlen($cryptkey);

// 明文,前10位用来保存时间戳,解密时验证数据有效性,10到26位用来保存$keyb(密匙b),

//解密时会通过这个密匙验证数据完整性

// 如果是解码的话,会从第$ckey_length位开始,因为密文前$ckey_length位保存 动态密匙,以保证解密正确

$string = $operation == 'DECODE' ? base64_decode(substr($string , $ckey_length)) : sprintf('%010d' , $expiry ? $expiry + time() : 0) . substr(md5($string . $keyb) , 0 , 16) . $string;

$string_length = strlen($string);

$result = '';

$box = range(0 , 255);

$rndkey = array();

// 产生密匙簿

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

$rndkey[$i] = ord($cryptkey[$i % $key_length]);

}

// 用固定的算法,打乱密匙簿,增加随机性,好像很复杂,实际上对并不会增加密文的强度

for ($j = $i = 0 ; $i < 256 ; $i ++) {

$j = ($j + $box[$i] + $rndkey[$i]) % 256;

$tmp = $box[$i];

$box[$i] = $box[$j];

$box[$j] = $tmp;

}

// 核心加解密部分

for ($a = $j = $i = 0 ; $i < $string_length ; $i ++) {

$a = ($a + 1) % 256;

$j = ($j + $box[$a]) % 256;

$tmp = $box[$a];

$box[$a] = $box[$j];

$box[$j] = $tmp;

// 从密匙簿得出密匙进行异或,再转成字符

$result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256]));

}

if ($operation == 'DECODE') {

// 验证数据有效性,请看未加密明文的格式

if ((substr($result , 0 , 10) == 0 || substr($result , 0 , 10) - time() > 0) && substr($result , 10 , 16) == substr(md5(substr($result , 26) . $keyb) , 0 , 16)) {

return substr($result , 26);

} else {

return '';

}

} else {

// 把动态密匙保存在密文里,这也是为什么同样的明文,生产不同密文后能解密的原因

// 因为加密后的密文可能是一些特殊字符,复制过程可能会丢失,所以用base64编码

return $keyc . str_replace('=' , '' , base64_encode($result));

}

}

$key = 'www.helloweba.com';

$str = '非常给力的authcode加密函数,Discuz!经典代码(带详解)';

$str = json_encode($arr = [

['id'=>5,'name'=>'qwefv','age'=>12],

['id'=>2,'name'=>'sdgs','age'=>17],

['id'=>7,'name'=>'rtj','age'=>11],

['id'=>6,'name'=>'fgs','age'=>16],

]);

dd('加密的数据--=======================================================================================');

dd($str);

$encode = authcode($str , 'ENCODE' , $key , 20); //加密

dd($encode);

/*$encode = 'ab4b23VeCEMjfKfI5A7FsnUPNbSflYmsH9Vx8bu2CRQ6D6Q';*/

$decode = authcode($encode , 'DECODE' , $key , 20); //解密

dd($decode);

dd(json_decode($decode));

function getdir1($path){

$pathArr = [];

searchDir1($path,$pathArr);

return $pathArr;

}

function searchDir1($path,&$pathArr){

if (is_dir($path)){

$pathArr[] = $path;

$opendir = opendir($path);

while ($file = readdir($opendir)){

if ($file != '.' && $file != '..'){

searchDir1($path.'/'.$file,$pathArr);

}

}

closedir($opendir);

}else{

$pathArr[] = $path;

}

}

dd(getdir1('img'));

dd('/*----------------------------RSA 加解密 $privateKey 和 $publicKey 的长度影响到 能加解密的字符串的长度-----------------------------------------------------------------------------------------*/');

/*----------------------------RSA 加解密 $privateKey 和 $publicKey 的长度影响到 能加解密的字符串的长度-----------------------------------------------------------------------------------------*/

// http://web.chacuo.net/netrsakeypair 在线生成非对称加密公钥私钥对、在线生成公私钥对、RSA Key pair create、生成RSA密钥对

// 生成密钥位数 的大小,影响到能加解密的字符串的长度

/**

* 解密

* @param string $encryptString

* @return string

*/

function privateDecrypt($encryptString = '')

{

$decrypted = '';

$key = "MIIEwAIBADANBgkqhkiG9w0BAQEFAASCBKowggSmAgEAAoIBAQDa8/M5WIpWjyF2jr+Ikg/4L2HDljcG7TN4fdrTWXyQK4fnYL3uh2mVUxi918Z+Y+msJSPAE5mS4AN219OcQyPXUVvI/Qw18B8rCd6f+pWpl0ecGi4VjZBgXevezqQcnNJbQPf7xIYsGEgaGQRzfuKJ0Ym33A0IN38zaW2aGAxSTQa0bUiFIuveZUlGb/NLCSlY1zb2bm4ju+w4pCNe5YQtKmy7Cp9Xt9UlzshbAfErxdYmf68RgUQkb4/NxjkLz7JxtGrLSOhkdNPVYFQe9oYpdfuVw8v38d4jiiMfUFy0YdxBwdthQTTmowiSqExBHtr/bL35XM2lEremGwoD+LwDAgMBAAECggEBANraSryATs6UhKs/ph05ejLmEX9xj5Eh2XfPvMHSyZpFmLNi1JYuzg+PHsTrgCFndvM1sFVWggP4XB4XPxILXjDjxq3Qmbr0SAM5+0fHLn90kgRrerLabHyWhKSRwiJDclP6TaVfW4mJv9AuP2++XWvKgTDBCFm1NzTJZd9HuFEtiTrtw0hFmdM76fN4TfOe0COqaYQJAW+r1w+H6YXynppwTQtFnYf6WPjQWEAORtVxeT/ww0nkDSOsuPP5izCYccQ2QDnam6i0a+z/af+spPiKc1dgGodbxywfQRFoa10ouLrdakbazk6sRvvxbYKoD22IlxisavD5Xxwn36zg5CECgYEA9PV4qQ3PJ+eEC64d83tc5Ck6V50TNTt4eUCghjYPnJCRfDZKBDmPEA2ck9xou40AFEpYnb2dFTRlbRGtgtHBaHQ2OpPDS51NcPaF7BhX8kjQA2omBXdXEpYTv+XcplcALgPNswKEL62RluFbLm5JHgNgXc6cr/v3X67VtaM5jnMCgYEA5NJm1TFg9VykB3nOSXgXlZU91WbIOMiSlTOFYc5AgCLRPWnj51Ayj0DvgN/ZswlCg0ymzJFy0RCt+KqiPKQkrCn1NUL9E8xS5CsUs6IYjAyThjLhJzsZnWNVMEYEpgLzWdrOx/6NCqAziuXvqsi4BYisSabvq27GbEMK7e5jqDECgYEAwRzr/MqIL7tS3CpuLk9o0e62se+A/wxdU6nhYy0nbZSDPVtHSsFdyZgRgnfWkVT9ZQGfjuu29MqT00KGeYWHZiOHxPJMmkXukUmoFpKycq14X9jFFLYajOqHs1cxdmlMGPqipacsMrIw/rO2wIntVp3u0MVbvVl0kZgxnrqJW4UCgYEAuDtnLDOLm0Gxl4tMuf6FDpyQomcUwhNLYfGPbMYBTKm7yjSdmDoL2ycvLpYM04ebE9f9XCunRAin6dSIt0Z5eFx33yBGX1BdVPQSwOa72NavWJdSjKGa6At4JVvalkc945S2dHPQ30NI/IZRRzJAZ8Q44zwTL/YKsFPyUstjVaECgYEA0ke0r5NG1I5pJmLQFuaFFMxeKkzU/J7RnQoDkPA5xDwQ7GFB19VqKUQbywuvnLFtoF1Xu2cXtbZ/ulvDQQHIM0B7TJXgI+DofujkiJhPeMNNx2mnUtGHbIvFVdx2EQzQGg2hDvnitJabN1uowtVYmoxtNG/5tnXiGYUvxcGnCNY=";

$key_eol = (string) implode("\n", str_split((string) $key, 64));

$privateKey = (string) "-----BEGIN RSA PRIVATE KEY-----\n" . $key_eol . "\n-----END RSA PRIVATE KEY-----";

openssl_private_decrypt(base64_decode($encryptString), $decrypted, $privateKey);

return $decrypted;

}

/**

* 加密

* @param string $data

* @return string

*/

function publicEncrypt($data = '')

{

$encrypt_data = '';

// $publicKey = self::JS_ENCRYPT;

// openssl_public_encrypt($data, $encrypt_data, $publicKey);

$key = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2vPzOViKVo8hdo6/iJIP+C9hw5Y3Bu0zeH3a01l8kCuH52C97odplVMYvdfGfmPprCUjwBOZkuADdtfTnEMj11FbyP0MNfAfKwnen/qVqZdHnBouFY2QYF3r3s6kHJzSW0D3+8SGLBhIGhkEc37iidGJt9wNCDd/M2ltmhgMUk0GtG1IhSLr3mVJRm/zSwkpWNc29m5uI7vsOKQjXuWELSpsuwqfV7fVJc7IWwHxK8XWJn+vEYFEJG+PzcY5C8+ycbRqy0joZHTT1WBUHvaGKXX7lcPL9/HeI4ojH1BctGHcQcHbYUE05qMIkqhMQR7a/2y9+VzNpRK3phsKA/i8AwIDAQAB";

$key_eol = (string) implode("\n", str_split((string) $key, 64));

$publicKey = (string) "-----BEGIN PUBLIC KEY-----\n" . $key_eol . "\n-----END PUBLIC KEY-----";

openssl_public_encrypt($data, $encrypt_data, $publicKey);

$encrypt_data = base64_encode($encrypt_data);

return $encrypt_data;

}

$str = json_encode($arr = [

'id'=>5,

'name'=>'qwefv',

'name1'=>'qwefv',

'name2'=>'qwefvqwefvqwefvqwefvqwefvqwefvqwefvqwefvqwefvqwefvqwefv',

'age'=>12,

'age3'=>12,

'age4'=>12,

'data'=>[

'id'=>5,

'name1'=>'qwefv',

'name2'=>'qwefv',

'name3'=>'qwefv',

'age4'=>12,

'age5'=>12,

'age6'=>12,

]

]);

dd('明文:'.$str);

$mdstr = publicEncrypt($str);

dd($mdstr);

//使用

$param = privateDecrypt($mdstr);

/*$array = json_decode($param, true);*/

dd($param);

一键复制

编辑

Web IDE

原始数据

按行查看

历史

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值