PHP로 작성된 여권 복호화 기능
풀어 주다: 2016-07-25 09:02:53
-
-
/** - * Passport 解密函数
- *
- * @param string 加密后的字串
- * @param string 私有密匙(用于解密和加密)
- *
- * @return string 字串经过私有密匙解密后的结果
- */
- function passport_decrypt($txt, $key) {
// $txt 的结果为加密后的字串经过 base64 解码,然后与私有密匙一起,
- // 经过 passport_key() 函数处理后的返回值
- $txt = passport_key(base64_decode($txt), $key);
// 变量初始化
- $tmp = '';
// for 循环,$i 为从 0 开始,到小于 $txt 字串长度的整数
- for ($i = 0; $i < strlen($txt); $i ) {
- // $tmp 字串在末尾增加一位,其内容为 $txt 的第 $i 位,
- // 与 $txt 的第 $i 1 位取异或。然后 $i = $i 1
- $tmp .= $txt[$i] ^ $txt[ $i];
- }
// 返回 $tmp 的值作为结果
- return $tmp;
}
/**
- * Passport 密匙处理函数
- *
- * @param string 待加密或待解密的字串
- * @param string 私有密匙(用于解密和加密)
- *
- * @return string 处理后的密匙
- */
- function passport_key($txt, $encrypt_key) {
// 将 $encrypt_key 赋为 $encrypt_key 经 md5() 后的值
- $encrypt_key = md5($encrypt_key);
// 变量初始化
- $ctr = 0;
- $tmp = '';
// for 循环,$i 为从 0 开始,到小于 $txt 字串长度的整数
- for($i = 0; $i < strlen($txt); $i ) {
- // 如果 $ctr = $encrypt_key 的长度,则 $ctr 清零
- $ctr = $ctr == strlen($encrypt_key) ? 0 : $ctr;
- // $tmp 字串在末尾增加一位,其内容为 $txt 的第 $i 位,
- // 与 $encrypt_key 的第 $ctr 1 位取异或。然后 $ctr = $ctr 1
- $tmp .= $txt[$i] ^ $encrypt_key[$ctr ];
- }
// 返回 $tmp 的值作为结果
- return $tmp;
- }
- ?>
-
复制代码
|
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
-
2024-10-22 09:46:29
-
2024-10-13 13:53:41
-
2024-10-12 12:15:51
-
2024-10-11 22:47:31
-
2024-10-11 19:36:51
-
2024-10-11 15:50:41
-
2024-10-11 15:07:41
-
2024-10-11 14:21:21
-
2024-10-11 12:59:11
-
2024-10-11 12:17:31