理解一下base64演算法,乙個PHP加解密方法

2021-07-31 05:20:07 字數 1434 閱讀 1171

function

encrypt

($string,$operation,$key='darling')

//隨機獲取新的box的值

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

<256;$i++)

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

<$string_length;$i++)

if($operation=='d')else

}else

}

上面的加密方法主要利用了兩點,當然主要加密方式其實只有異或的加密,base64相當於格式轉換了。注意我上面寫的注釋是主要的重點部分。

base64加密主要是將原來的三位元組變為四位元組,其實也就是用00代替高位,然後這樣的話所能代表的只有64個字元,所以可以看到加密結果只有下面的64個字元:

0 a            17 r            34 i            51 z

1 b 18 s 35 j 5202

c19 t 36 k 5313

d20 u 37 l 5424

e21 v 38 m 55

35 f 22 w 39 n 56

46 g 23 x 40 o 57

57 h 24 y 41 p 5868

i25 z 42 q 59

79 j 26 a 43 r 60810

k27 b 44 s 61

911 l 28 c 45 t 62 +

12 m 29 d 46 u 63 /

13n30 e 47 v

14o31 f 48 w (pad) =

15 p 32 g 49 x

16 q 33 h 50 y

當然=另算,=是base64的最後位數不足的時候的補位,所以不影響資料的完整性。

encrypt("待加密字串");//加密

encrypt("待解密字串","d");//解密

Base64演算法的前世今生(一)

base64演算法的由來 base64演算法主要最早用於解決電子郵件傳輸問題。在早期,由於歷史問題,電子郵件只允許傳輸ascii碼字元 當傳輸非ascii碼時,閘道器很可能將非ascii碼的二進位制位調整,即將非ascii碼的8位二進位制的最高位置0。當使用者收到郵件時,可想而知,收到的就是 乙份亂...

乙個base64引發的血案

結果發現header跟body之間多了乙個換行符 r n http協議預設header和body之間有乙個空行隔開,也就是乙個只含有 r n的行,但是多了乙個 r n,就會導致伺服器取body的時候從這個多出來的 r n開始取content length個字元,這樣body裡最後的兩個字元就被這個多...

個人的乙個小的Base64實現嘗試

由於種種問題只實現了一般,以後繼續實現吧 public class base64t 讀取資料3位元組 用and取前6位,放入新的變數中 右移兩位,高兩位清0 and取第乙個位元組的後2位和第二個位元組的前4位 移位放入新變數中 右移兩位,清0 依此類推。param bytes public stat...