ホームページ  >  記事  >  バックエンド開発  >  PHPソースコード解析:DZX1.5暗号化・復号化関数authcodeの使い方_PHPチュートリアル

PHPソースコード解析:DZX1.5暗号化・復号化関数authcodeの使い方_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-13 09:50:04782ブラウズ

phpソースコード解析のDZX1.5暗号化・復号化機能authcodeの使い方

この記事ではphpソースコード解析のDZX1.5暗号化・復号化機能authcodeの使い方について説明します。皆さんの参考に共有してください。具体的な分析は次のとおりです:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

$authkey = '';

/**

* @param string $string: 暗号化 (または復号化) する必要がある入力平文 (または暗号文)

* @param string $operation: 'DECODE' またはその他、デフォルトは復号化を意味し、その他の入力は暗号化を意味します

* @param string $key: 暗号化キーと復号化キー

* @param int $expiry: 有効期限

*/

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

グローバル $authkey;

$ckey_length = 4;

$key = md5($key != '' ? $key : $authkey);

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

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

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

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

$key_length = strlen($cryptkey);

$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);

$結果 = '';

$box = range(0, 255);

$rndkey = 配列();

for($i = 0; $i

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

}

for($j = $i = 0; $i

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

$tmp = $box[$i];

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

$box[$j] = $tmp;

}

for($a = $j = $i = 0; $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 == 'デコード') {

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

substr($result, 26);

を返す

} 他 {

戻る '';

}

} 他 {

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

}

}

$str = '1234';

$key = '1234';

エコー "プレーン テキスト:".$str;

エコー "
";

エコー "キー:".$key;

$encode = 認証コード($str,'11',$key);

エコー "
";

echo "暗号化された暗号文:".$encode;

エコー "
";

$decode = authcode($encode,'DECODE',$key);

echo "復号化されたプレーンテキスト:".$decode;

/*php の終わり*/

実行結果は次のとおりです:

クリアテキスト: 1234

キー:1234

暗号化された暗号文: a52f67eXZGVy0HtQBo4vOREhq3WxnL6E2zlx75JGfoJW

復号化された平文: 1234

この記事が皆様の PHP プログラミング設計に役立つことを願っています。

www.bkjia.com本当http://www.bkjia.com/PHPjc/1018379.html技術記事 PHP ソースコード解析における DZX1.5 暗号化および復号化関数 authcode の使用方法 この記事では、PHP ソースコード解析における DZX1.5 暗号化および復号化関数 authcode の使用方法について説明します。皆さんの参考に共有してください。詳細な分析...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。