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...