ホームページ バックエンド開発 PHPチュートリアル PHP マスターの皆さんには、この暗号化アルゴリズムの原理をよく理解していただきたいと思います。

PHP マスターの皆さんには、この暗号化アルゴリズムの原理をよく理解していただきたいと思います。

Jun 13, 2016 pm 01:09 PM
code key quot str strlen

求php高手,看下这一段加密算法的原理

PHP code
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->

function sys_auth($str, $action = 'encode', $key = ''){
    $key = md5($key);
    $str = $action == 'encode' ? $str : base64_decode($str);
    
    
    $strlen = strlen($str);
    
    $keylen = strlen($key);
    
    $code = '';
    for($i = 0; $i &lt; $strlen; $i++){
        $k = $i % $keylen;
        $code .= $str[$i] ^ $key[$k];
    }
    $code = $action == &quot;decode&quot; ? $code : base64_encode($code);
    return $code;
}



ログイン後にコピー


我将每句都echo 下的代码:

PHP code
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->

function sys_auth($str, $action = 'encode', $key = ''){
    $key = md5($key);
    echo '&lt;br&gt;$key:'.$key;
    $str = $action == 'encode' ? $str : base64_decode($str);
    
    echo '&lt;br&gt;加密方式的$str:'.$str;
    
    $strlen = strlen($str);
    echo '&lt;br&gt;$str长度'.$strlen;
    
    $keylen = strlen($key);
    echo '&lt;br&gt;$keylen长度'.$keylen;
    
    $code = '';
    for($i = 0; $i &lt; $strlen; $i++){
        $k = $i % $keylen;
        echo "&lt;br&gt;第".$i."次循环的\$k的值是".$k;
        $code .= $str[$i] ^ $key[$k];
        echo "&lt;br&gt;第".$i.'次循环$k值是'.$k;
        echo "&lt;br&gt;第".$i.'次循环$str[$i]值是'.$str[$i];
        echo "&lt;br&gt;第".$i.'次循环$key[$k]值是'.$key[$k];
        echo "&lt;br&gt;第".$i."次循环的\$code的值是".$code."&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;";
    }
    $code = $action == "decode" ? $code : base64_encode($code);
    echo "&lt;br&gt;".$code;
    return $code;
}


得到的结果是:
[code=PHP]
$key:c81e728d9d4c2f636f067f89cc14862c
加密方式的$str:123456
$str长度6
$keylen长度32
第0次循环的$k的值是0
第0次循环$k值是0
第0次循环$str[$i]值是1
第0次循环$key[$k]值是c
第0次循环的$code的值是R





第1次循环的$k的值是1
第1次循环$k值是1
第1次循环$str[$i]值是2
第1次循环$key[$k]值是8
第1次循环的$code的值是R 





第2次循环的$k的值是2
第2次循环$k值是2
第2次循环$str[$i]值是3
第2次循环$key[$k]值是1
第2次循环的$code的值是R 





第3次循环的$k的值是3
第3次循环$k值是3
第3次循环$str[$i]值是4
第3次循环$key[$k]值是e
第3次循环的$code的值是R Q





第4次循环的$k的值是4
第4次循环$k值是4
第4次循环$str[$i]值是5
第4次循环$key[$k]值是7
第4次循环的$code的值是R Q





第5次循环的$k的值是5
第5次循环$k值是5
第5次循环$str[$i]值是6
第5次循环$key[$k]值是2
第5次循环的$code的值是R Q





UgoCUQIE
加密后:UgoCUQIE



ログイン後にコピー

[/code]
 
现在的问题是:第0次循环$str[0]值是1,$key[0]值是c
我直接按照上面的 $str[0]^$key[0],(即1^0)却报错,怎么回事,另外 $str[0]^$key[0]不懂

------解决方案--------------------
手册,运算符
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

SQL の ID 属性は何を意味しますか? SQL の ID 属性は何を意味しますか? Feb 19, 2024 am 11:24 AM

SQL の ID 属性は何を意味しますか?

SpringBoot が Redis キー変更イベントを監視する方法 SpringBoot が Redis キー変更イベントを監視する方法 May 26, 2023 pm 01:55 PM

SpringBoot が Redis キー変更イベントを監視する方法

パッチ不可能な Yubico 2 要素認証キーの脆弱性により、ほとんどの Yubikey 5、セキュリティ キー、YubiHSM 2FA デバイスのセキュリティが侵害される パッチ不可能な Yubico 2 要素認証キーの脆弱性により、ほとんどの Yubikey 5、セキュリティ キー、YubiHSM 2FA デバイスのセキュリティが侵害される Sep 04, 2024 pm 06:32 PM

パッチ不可能な Yubico 2 要素認証キーの脆弱性により、ほとんどの Yubikey 5、セキュリティ キー、YubiHSM 2FA デバイスのセキュリティが侵害される

Redisでキー値が一括削除される問題を解決する方法 Redisでキー値が一括削除される問題を解決する方法 May 31, 2023 am 08:59 AM

Redisでキー値が一括削除される問題を解決する方法

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决

Visual Studio Code で Unity プロジェクトを編集すれば、準備完了です。 Visual Studio Code で Unity プロジェクトを編集すれば、準備完了です。 Aug 08, 2023 am 10:21 AM

Visual Studio Code で Unity プロジェクトを編集すれば、準備完了です。

Java で JSONObject に特定のキーが含まれているかどうかを確認するにはどうすればよいですか? Java で JSONObject に特定のキーが含まれているかどうかを確認するにはどうすればよいですか? May 08, 2023 pm 12:25 PM

Java で JSONObject に特定のキーが含まれているかどうかを確認するにはどうすればよいですか?

Redis 数百億の主要なストレージ ソリューションを実装する方法 Redis 数百億の主要なストレージ ソリューションを実装する方法 May 30, 2023 pm 05:44 PM

Redis 数百億の主要なストレージ ソリューションを実装する方法

See all articles