日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

php实现 字符串加密(分类分布分工,化不可能为可能)

發(fā)布時間:2025/3/15 php 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php实现 字符串加密(分类分布分工,化不可能为可能) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

php實現(xiàn)? 字符串加密(分類分布分工,化不可能為可能)

一、總結(jié)

一句話總結(jié):謀而后動,加先偽代碼,在帶函數(shù)邏輯,在函數(shù)的方式可以極大的避免錯誤和降低難度。不然這個題目乎出現(xiàn)各種亂七八糟的錯誤。

?

1、算法中如何避免錯誤和降低難度?

謀而后動,加先偽代碼,在帶函數(shù)邏輯,在函數(shù)的方式可以極大的避免錯誤和降低難度。

?

2、調(diào)試的時候出現(xiàn)了一個在小寫密碼表中找大寫字母的錯誤?

也就是少了第57行

56 if($data[$i]>='A'&&$data[$i]<='Z'){ 57 $data[$i]=strtolower($data[$i]); 58 $ans.=chr(ord($passwordListLower[$data[$i]])-32);

?

3、php中如何取一個字符串中的某個字符?

數(shù)組的方式:[]

18 function distinctKey($key){ 19 //先把$key轉(zhuǎn)成小寫 20 $key=strtolower($key); 21 $len=strlen($key); 22 for($i=0;$i<$len;$i++){ 23 $keyArr[$key[$i]]++; 24 }

?

?

二、字符串加密

題目描述

有一種技巧可以對數(shù)據(jù)進行加密,它使用一個單詞作為它的密匙。下面是它的工作原理:首先,選擇一個單詞作為密匙,如TRAILBLAZERS。如果單詞中包含有重復(fù)的字母,只保留第1個,其余幾個丟棄?,F(xiàn)在,修改過的那個單詞屬于字母表的下面,如下所示:

A?B?C?D?E?F?G?H?I?J?K?L?M?N?O?P?Q?R?S?T?U?V?W?X?Y?Z

T?R?A?I?L?B?Z?E?S?C?D?F?G?H?J?K?M?N?O?P?Q?U?V?W?X?Y

上面其他用字母表中剩余的字母填充完整。在對信息進行加密時,信息中的每個字母被固定于頂上那行,并用下面那行的對應(yīng)字母一一取代原文的字母(字母字符的大小寫狀態(tài)應(yīng)該保留)。因此,使用這個密匙,Attack?AT?DAWN(黎明時攻擊)就會被加密為Tpptad?TP?ITVH。

請實現(xiàn)下述接口,通過指定的密匙和明文得到密文。

詳細(xì)描述:

接口說明

原型:

voidencrypt(char?*?key,char?*?data,char?*?encrypt);

輸入?yún)?shù):

char?*?key:密匙

char?*?data:明文

輸出參數(shù):

char?*?encrypt:密文

返回值:

void

?

?

輸入描述:

先輸入key和要加密的字符串

輸出描述:

返回加密后的字符串

示例1

輸入

復(fù)制 nihao ni

輸出

復(fù)制 le

?

代碼:

1 <?php 2 while($key=trim(fgets(STDIN))){ 3 $data=trim(fgets(STDIN)); 4 //密匙去重distinctKey() 5 //echo distinctKey($key).PHP_EOL; 6 $distinctKeyStr=distinctKey($key); 7 //用去重了的密匙構(gòu)建密碼表密文字串formPassword($distinctKeyStr) 8 $passwordLower=formPasswordLower($distinctKeyStr); 9 //echo $passwordLower; 10 //用密文字串來構(gòu)建密碼表(大寫和小寫兩套),小寫只用在大寫的基礎(chǔ)上面加上32即可 getPasswordListLower(distinctKeyStr); 11 $passwordListLower=getPasswordListLower($passwordLower); 12 //print_r($passwordListLower); 13 //用密碼表根據(jù)明文輸出密文getEncrypt($data,$passwordListLower) 14 $encrypt=getEncrypt($data,$passwordListLower); 15 echo $encrypt.PHP_EOL; 16 //echo chr(ord('b')-32); 17 } 18 function distinctKey($key){ 19 //先把$key轉(zhuǎn)成小寫 20 $key=strtolower($key); 21 $len=strlen($key); 22 for($i=0;$i<$len;$i++){ 23 $keyArr[$key[$i]]++; 24 } 25 foreach($keyArr as $k=>$v){ 26 $ans.=$k; 27 } 28 return $ans; 29 } 30 31 function formPasswordLower($distinctKeyStr){ 32 for($i=0;$i<26;$i++){ 33 $vis[chr(ord(a)+$i)]=0; 34 } 35 $len=strlen($distinctKeyStr); 36 for($i=0;$i<$len;$i++){ 37 $vis[$distinctKeyStr[$i]]=1; 38 } 39 for($i=0;$i<26;$i++){ 40 if(!$vis[chr(ord(a)+$i)]) $distinctKeyStr.=chr(ord(a)+$i); 41 } 42 return $distinctKeyStr; 43 } 44 45 function getPasswordListLower($passwordLower){ 46 for($i=0;$i<26;$i++){ 47 $passwordListLower[chr(ord(a)+$i)]=$passwordLower[$i]; 48 } 49 return $passwordListLower; 50 } 51 52 function getEncrypt($data,$passwordListLower){ 53 $len=strlen($data); 54 $ans=null; 55 for($i=0;$i<$len;$i++){ 56 if($data[$i]>='A'&&$data[$i]<='Z'){ 57 $data[$i]=strtolower($data[$i]); 58 $ans.=chr(ord($passwordListLower[$data[$i]])-32); 59 }else if($data[$i]>='a'&&$data[$i]<='z'){ 60 $ans.=$passwordListLower[$data[$i]]; 61 }else{ 62 $ans.=$data[$i]; 63 } 64 } 65 return $ans; 66 } 67 68 ?>

?

?

?

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/Renyi-Fan/p/9233782.html

總結(jié)

以上是生活随笔為你收集整理的php实现 字符串加密(分类分布分工,化不可能为可能)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。