如何判斷字串是否經過base64加密過

時間 2021-07-08 21:12:35

1樓:匿名使用者

1.標準base64只有64個字元(英文大小寫、數字和+、/)以及用作字尾等號;

2.base64是把3個位元組變成4個可列印字元,所以base64編碼後的字串一定能被4整除(不算用作字尾的等號);

3.等號一定用作字尾,且數目一定是0個、1個或2個。這是因為如果原文長度不能被3整除,base64要在後面新增\0湊齊3n位。

為了正確還原,新增了幾個\0就加上幾個等號。顯然新增等號的數目只能是0、1或2;

4.嚴格來說base64不能算是一種加密,只能說是編碼轉換。使用base64的初衷。是為了方便把含有不可見字串的資訊用可見字串表示出來,以便複製貼上;

2樓:翲燚

首先,base64算不上是一種加密演算法。

base64是網路上最常見的用於傳輸8bit位元組**的編碼方式之一,它的目的是用ascii中定義的可見字元去表示任意的二進位制資料。之所以要這樣做,是因為計算機中很多資料是隻能通過可見字元去傳輸的(比如我們的****,比如一些面向字元的網路協議如smtp等),但是這些情景有時由需要去傳輸二進位制資料。基於這樣的需要,誕生了base64.

簡單來講,base64就是用下列總計64個字元:

a-za-z

0-9去表示二進位制資料。二進位制資料以位元組為組,一個位元組8bit存在256個狀態,而一個base64字元只有64個狀態。機智的人們於是規定,用每4個base64字元去表示3個二進位制位元組,因為:

64 * 64 * 64 * 64 = 256 * 256 * 256

因此,base64字串的長度必然是4的整數倍。此外,由於二進位制的位元組數不一定是3的整數倍,所以base64字串在結尾是可能有空的。這些空的狀態,base64引入第65個字元去表示:

=這也是為什麼base64很多都是以=或==結尾的。但是注意,也存在不以=或==結尾的base64,只要編碼的二進位制位元組數恰好被3給整除。

一般情況下,一個合法的base64,有著以下特徵:

字串的長度為4的整數倍。

字串的符號取值只能在a-z, a-z, 0-9, +, /, =共計65個字元中,且=如果出現就必須在結尾出現。

如何判斷一個字串是否經過了base64

3樓:匿名使用者

唯一的麻煩可能是要選擇字符集。

1.標準base64只有64個字元(英文大小寫、數字和+、/)以及用作字尾等號;

2.base64是把3個位元組變成4個可列印字元,所以base64編碼後的字串一定能被4整除(不算用作字尾的等號);

3.等號一定用作字尾,且數目一定是0個、1個或2個。這是因為如果原文長度不能被3整除,base64要在後面新增\0湊齊3n位。

為了正確還原,新增了幾個\0就加上幾個等號。顯然新增等號的數目只能是0、1或2;

4.嚴格來說base64不能算是一種加密,只能說是編碼轉換。使用base64的初衷。是為了方便把含有不可見字串的資訊用可見字串表示出來,以便複製貼上;

c#中怎麼判斷一個字串是不是經過了base64加密?

4樓:醉酒銀蟲

public static bool isbase64formatted(string input)

catch}一種

bai很du

簡單zhi的dao方法回。答

如何判斷一個字串是否經過base64加密過

js判斷某字串中是否存在一段字串

var settime 4 00 字串settime var i settime.indexof 如果settime包含 則 i 返回 在settime裡面的位置,否則返回 1 import org.apache.commons.lang.stringutils stringutils.contai...

python判斷字串是否為數字

z伊凡 正則匹配法比較嚴謹一些,你說的數字有沒有條件限制?下面是一些常用的判斷各種數字的正規表示式 驗證數字 0 9 驗證n位的數字 d 驗證至少n位數字 d 驗證m n位的數字 d 驗證零和非零開頭的數字 0 1 9 0 9 驗證有兩位小數的正實數 0 9 0 9 驗證有1 3位小數的正實數 0 ...

判斷字串是否迴文(用free pascal解)

我說一下思路吧。首先資料範圍是100000 999999的話,只要迴圈 for i 100000 to 999999就可以了,這裡迴圈變數不要忘了要用longint 之後只要判斷素數和迴文數就可以了 可以用if 判斷迴文數 i false then flag false else if 判斷素數 i...