base64批量加密
A. 2.哈希加密 & base64加密
一、哈希HASH
哈希(散列)函數 MD5 SHA1/256/512 HMAC
Hash的特點:
1.演算法是公開的
2.對相同數據運算,得到的結果是一樣的
3.對不同數據運算,如MD5得到的結果是128位,32個字元的十六進製表示,沒法逆運算
1.MD5加密
MD5加密的特點:
不可逆運算
對不同的數據加密的結果是定長的32位字元(不管文件多大都一樣)
對相同的數據加密,得到的結果是一樣的(也就是復制)。
抗修改性 : 信息「指紋」,對原數據進行任何改動,哪怕只修改一個位元組,所得到的 MD5 值都有很大區別.
弱抗碰撞 : 已知原數據和其 MD5 值,想找到一個具有相同 MD5 值的數據(即偽造數據)是非常困難的.
強抗碰撞: 想找到兩個不同數據,使他們具有相同的 MD5 值,是非常困難的
MD5 應用:
一致性驗證:MD5將整個文件當做一個大文本信息,通過不可逆的字元串變換演算法,產生一個唯一的MD5信息摘要,就像每個人都有自己獨一無二的指紋,MD5對任何文件產生一個獨一無二的數字指紋。
那麼問題來了,你覺得這個MD5加密安全嗎?其實是不安全的,不信的話可以到這個網站試試:md5破解網站。可以說嗖地一下就破解了你的MD5加密!
2.SHA加密
安全哈希演算法(Secure Hash Algorithm)主要適用於數字簽名標准(Digital Signature Standard DSS)裡面定義的數字簽名演算法(Digital Signature Algorithm DSA)。對於長度小於2^64位的消息,SHA1會產生一個160位的消息摘要。當接收到消息的時候,這個消息摘要可以用來驗證數據的完整性。在傳輸的過程中,數據很可能會發生變化,那麼這時候就會產生不同的消息摘要。當讓除了SHA1還有SHA256以及SHA512等。
二、base64加密
1.Base64說明
描述:Base64可以成為密碼學的基石,非常重要。
特點:可以將任意的二進制數據進行Base64編碼
結果:所有的數據都能被編碼為並只用65個字元就能表示的文本文件。
65字元:A~Z a~z 0~9 + / =
對文件進行base64編碼後文件數據的變化:編碼後的數據~=編碼前數據的4/3,會大1/3左右。
2.命令行進行Base64編碼和解碼
編碼:base64 123.png -o 123.txt
解碼:base64 123.txt -o test.png -D
2.Base64編碼原理
1)將所有字元轉化為ASCII碼;
2)將ASCII碼轉化為8位二進制;
3)將二進制3個歸成一組(不足3個在後邊補0)共24位,再拆分成4組,每組6位;
4)統一在6位二進制前補兩個0湊足8位;
5)將補0後的二進制轉為十進制;
6)從Base64編碼表獲取十進制對應的Base64編碼;
處理過程說明:
a.轉換的時候,將三個byte的數據,先後放入一個24bit的緩沖區中,先來的byte占高位。
b.數據不足3byte的話,於緩沖區中剩下的bit用0補足。然後,每次取出6個bit,按照其值選擇查表選擇對應的字元作為編碼後的輸出。
c.不斷進行,直到全部輸入數據轉換完成。
B. 01加密方式-Base64編碼
說明
HTTP將Base64編碼用於基本的認證和摘要認證。
其可以方便的將用戶的任何輸入轉換成只包含特定字元的安全格式,服務於網路通信過程。
特點
1)可以將任意的二進制數據進行Base64編碼。
2)所有的數據都能被編碼為並只用65個字元就能表示的文本文件。
3)編碼後的65個字元包括A Z,a z,0~9,+,/,=
4)對文件或字元串進行Base64編碼後將比 原始大小增加33% 。
5)能夠逆運算
6)不夠安全,但卻被很多加密演算法作為編碼方式
1)將所有字元轉化為ASCII碼;
2)將ASCII碼轉化為8位二進制;
3)將二進制3個歸成一組(不足3個在後邊補0)共24位,再拆分成4組,每組6位;
4)統一在6位二進制前補兩個0湊足8位;
5)將補0後的二進制轉為十進制;
6)從Base64編碼表獲取十進制對應的Base64編碼;
a.轉換的時候,將三個byte的數據,先後放入一個24bit的緩沖區中,先來的byte占高位。
b.數據不足3byte的話,則剩下的bit用0補足。每次取出6個bit,按照其值選擇查表選擇對應的字元作為編碼後的輸出。
c.不斷進行,直到全部輸入數據轉換完成。
d.如果最後剩下兩個輸入數據,在編碼結果後加1個「=」;
e.如果最後剩下一個輸入數據,編碼結果後加2個「=」;
f.如果沒有剩下任何數據,就什麼都不要加,這樣才可以保證資料還原的正確性。
運行效果圖
C. 易語言 Base64的加密演算法
代碼-----------.版本 2.子程序 Base64編碼, 位元組集, 公開
.參數 原文, 位元組集
.局部變數 余數, 整數型
.局部變數 三位元組數據, 位元組型, , "3"
.局部變數 碼表, 位元組集
.局部變數 len_x, 整數型
.局部變數 len_y, 整數型
.局部變數 結果, 位元組集
.局部變數 i, 整數型
.局部變數 k, 整數型len_x = 取位元組集長度 (原文)
.如果真 (len_x < 1)
返回 ({ })
.如果真結束
余數 = len_x % 3
.如果真 (余數 > 0)
原文 = 原文 + 取空白位元組集 (3 - 余數)
len_x = len_x + 3 - 余數
.如果真結束
len_y = len_x × 4 ÷ 3
結果 = 取空白位元組集 (len_y)
i = 1
碼表 = { 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 43, 47 }
.變數循環首 (1, len_x, 3, k)
三位元組數據 [1] = 原文 [k]
三位元組數據 [2] = 原文 [k + 1]
三位元組數據 [3] = 原文 [k + 2]
結果 [i] = 碼表 [右移 (三位元組數據 [1], 2) + 1]
結果 [i + 1] = 碼表 [左移 (位與 (三位元組數據 [1], 3), 4) + 右移 (三位元組數據 [2], 4) + 1]
結果 [i + 2] = 碼表 [左移 (位與 (三位元組數據 [2], 15), 2) + 右移 (三位元組數據 [3], 6) + 1]
結果 [i + 3] = 碼表 [位與 (三位元組數據 [3], 63) + 1]
i = i + 4
.變數循環尾 ()
.判斷開始 (余數 = 2)
結果 [len_y] = 61
.判斷 (余數 = 1)
結果 [len_y] = 61
結果 [len_y - 1] = 61
.默認.判斷結束
返回 (結果).子程序 _按鈕1_被單擊編輯框1.加入文本 (到文本 (Base64編碼 (到位元組集 (編輯框1.內容))))
希望我可以幫到你
D. 字元串轉base64加密
function encode(str) {
// 對字元串進行編碼
var encode = encodeURI(str);
// 對編碼的字元串轉化肆和base64
var base64 = btoa(encode);
return base64;
}
btoa 函數含差轉字元串的時候在小程序端 不支持會報錯
支持pc 端和小程序端的可以用下面的方法
function encode(str) {
// 對字元串進行編碼
var encode = encodeURI(str);
// 對編碼的字元串轉化base64
var base64 = base64_encode(encode);
return base64;
}
function base64_encode(str) {
var c1, c2, c3;
var base64EncodeChars = "+/";
var i = 0, len = str.length, string = '';
while (i < len) {
c1 = str.charCodeAt(i++) & 0xff;
if (i == len) {
string += base64EncodeChars.charAt(c1 >> 2);
string += base64EncodeChars.charAt((c1 & 0x3) << 4);
string += "==";
break;
}
c2 = str.charCodeAt(i++);
if (i == len) {
string += base64EncodeChars.charAt(c1 >> 2);
string += base64EncodeChars.charAt(((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4));
string += base64EncodeChars.charAt((c2 & 0xF) << 2);
string += "談雹皮=";
break;
}
c3 = str.charCodeAt(i++);
string += base64EncodeChars.charAt(c1 >> 2);
string += base64EncodeChars.charAt(((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4));
string += base64EncodeChars.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >> 6));
string += base64EncodeChars.charAt(c3 & 0x3F)
}
return string
}
E. 如何對websocket進行base64加密
服務端生成Sec-WebSocket-Accept規則:服務端將客戶端傳遞的key進行去除備敏中首尾空白,然後和一段固定的GUID(258EAFA5-E914-47DA-95CA-C5AB0DC85B11)進行連接,連接後的結果使用SHA-1(160數位)進拿州行哈希操作,對哈希後的字元串進行base64編碼,即為Accept內容。
websocket本質就是一個創建連接後不斷開的socket,當連接成功之後,客戶端(瀏覽器)會自動向服務端發送消息,服務端接收之後,會仿山對於該數據進行加密。
WebSocket是一種在單個TCP連接上進行全雙工通信的協議。
F. windows操作系統在dos下操作base64加密文件
總的來說是使用certutil
打開dos窗口,輸入dir查看當前目錄下的所有文件,如果目標文件在瞎消桌面直接輸入cd Desktop,這樣就進入了桌面。
然後再輸入dir查看當前目錄下的是否有這個目標文件(要操作文件的名字)在有目標文件的目錄下進行如下操作。
加密文件:certutil -encode 文件名 加密後的名
例如:certutil -encode pack.txt 1.py
就會在當前目錄下生成加密之後的文件
解密文件:certutil -decode 加密文件名 文件名
!!!注意:此處文件名可以自己重新起,但是後面的後綴一定要明確加密前是什麼格式,否則會出現亂源察碼
例如:雹神茄certutil -decode 1.py demo.txt
G. base64編解碼與hash加密
利用base64可以將二進制數據編碼為64個字元組成的字元串,64個字元為a-z,A-Z,0-9,+,/。base64編碼是將三個位元組的二進制數據編碼為四個位元組的字元數據,如果位元組數不為3的倍數base64會將 \x00 補在末尾,所以會常在base64字元串的末尾見到一個或者兩個的 = 號。
base64編碼
base64解碼
小技巧:遇到base64編碼的二進制文件可以直接解碼用io位元組流接收再用其他模塊載入,無需在本地保存文件再使用其他模塊載入。
哈希加密是對字元串進行加密,其加密後的散列值不可逆,即hash加密是單向加密不可解。python內置的hashlib庫提供了md5, SHA1, SHA224, SHA256, SHA384, SHA512 加密演算法的支持
H. Base64編碼是加密演算法嗎
大家好,我是阿薩。昨天和開發同學一起開會的時候。開發同學說到了用Base64編碼,我立即說 不能使用Base64加密。然後開發來了一句Base64不是加密演算法。當時懵了。默默記下這個知識點,回來學習下。
先給大家講解下我為什麼會有不能使用Base64加密的意識。很多年前,我遇到的第一個安全問題,就是敏感數據用Base64加密了。 事情起因是,我們接到一個bug,說有個敏感欄位使用Base64在前端加密了,然後傳給後端了。
基於之前的小故事,對於使用了Base64編碼的地方就覺得不安全。這也是為什麼會對開發說不能用Base64加密了,
今天我們就來學習下Base64編碼。
一,Base64編碼的由來。
傳說,最開始互聯網電子郵件都是英文的,後來互聯網傳到中國後,互聯網電子郵件漢字就不認識了。所以就有了Base64編碼,把中文變成可識別的英文。然後Base64編碼被廣泛用到各行各業。
以上只是傳說。真實的由來,就不得而知了。
下面我們從計算機的底層傳輸過程中。它分為可見字元和不可見字元。可見字元比如我們熟知的ASCII碼。
還有一些不可見的控制字元(0~31以及127),比如回車,換行等以及一些二進制數據都是不可見字元。
這些不可見字元在一些硬體,比如交換機,路由器以及網關等識別或者解析錯誤,導致錯誤發生,所以就有了Base64編碼的市場。因此Base64產生了。
二,Base64 編碼的原理
Base64編碼就是要把不可見的字元轉換成常見的64個字元的過程。
這64個字元是哪些呢?
那麼它工作原理是啥呢?
1) 首先把整段傳輸內容全部劃分成三個位元組一組。這里就有了24bit了.
2) 然後把24bit 分成四組。每一組就有6bit
3)在6bit的最前面添加2個0,這樣就有了8bit
4)把這8bit 轉換成一個位元組。查找上表中對應字元。所有其他分組內容按照這樣的處理邏輯處理下。就得到了Base64的編碼後字元。
注意,如果不夠三位元組,用0填到三位元組,同時補充了多少個位元組的0,末尾就添加就幾個=。
分別圖示下以上過程:
三個A
2個A,補充一個0
1個A,補充2個0
三,總結
Base64編碼不是用來加密的,也不是加密演算法。它只是用來編碼的。切記不可用於加密。如果敏感信息用Base64編碼加密了,趕緊提bug。
經過今天的學習,希望大家有所收獲。
如果你喜歡今天的內容,歡迎點贊,關注。