BASE64編解碼
Openssl中用於base64編解碼的函式主要有:
1) 編碼函式
Ø EVP_EncodeInit函式
原型:void EVP_EncodeInit(EVP_ENCODE_CTX *ctx);
功能:該函式初始化一個用來進行base64編碼的結構,事實上,該函式只是簡單設定了結構裡面幾個常量的長度。
引數:
ctx:base64裝置上下文。
Ø EVP_EncodeUpdate函式
原型:void EVP_EncodeUpdate(EVP_ENCODE_CTX *ctx,unsigned char *out,int *outl,unsigned char *in,int inl);
功能:該函式將引數in裡面的inl自己資料拷貝到結構體ctx裡面,如果結構體裡面有資料,就同時將結構體裡面的資料進行BASE64編碼並輸出到引數out指向的快取裡面,輸出資料的長度儲存在outl裡面。注意,在第一次呼叫本函式的時候,雖然往結構體裡面拷貝資料了,但是結構體ctx裡面開始是沒有輸入資料存在並且輸入資料長度不超出ctx內部儲存資料的最長限制,就不會有任何資料被進行BASE64編碼,也就是說,不會有任何資料輸出;但是如果輸入資料長度比內部儲存的資料長,那麼就會輸出部分經過BASE64編碼的資料。資料輸出總是在下一層輸入前完成的。
引數:
ctx:base64裝置上下文。
out:存放編碼後的資料緩衝區。
outl:編碼後的資料長度。
in:編碼前的資料。
inl:編碼前的資料長度。
Ø EVP_EncodeFinal函式
原型:void EVP_EncodeFinal(EVP_ENCODE_CTX *ctx,unsigned char *out,int *outl);
功能:該函式將結構體ctx裡面剩餘資料進行BASE64編碼並寫入到引數out裡面去,輸出資料的長度儲存在outl裡面。
引數:
ctx:base64裝置上下文。
out:存放編碼後的資料。
outl:編碼後的資料長度。
Ø EVP_EncodeBlock函式
原型:int EVP_EncodeBlock(unsigned char *t, const unsigned char *f, int n);
功能:該函式將引數f裡面的字串裡面的n個位元組的字串進行BASE64編碼並輸出到引數t裡面。返回資料的位元組長度。事實上,在函式EVP_EncodeUpdate和EVP_EncodeFinal裡面就呼叫了該函式完成BASE64編碼功能。
引數:
t:接收編碼後的資料緩衝區。
f:編碼前的資料。
n:編碼前的資料長度。
2) 解碼函式
Ø EVP_DecodeInit函式
原型:void EVP_DecodeInit(EVP_ENCODE_CTX *ctx);
功能:該函式初始化一個用來進行BASE64解碼的資料結構。
引數:
ctx:base64裝置上下文。
Ø EVP_DecodeUpdate函式
原型:int EVP_DecodeUpdate(EVP_ENCODE_CTX *ctx,unsigned char *out,int *outl,unsigned char *in, int inl);
功能:該函式將引數in裡面inl位元組的資料拷貝到結構體ctx裡面。如果結構體裡面已經有資料,那麼這些資料就會先進行BASE64解碼,然後輸出到引數out指向的記憶體中,輸出的位元組數儲存在引數outl裡面。輸入資料為滿行的資料時,返回為1;如果輸入資料是最後一行資料的時候,返回0;返回-1則表明出錯了。
引數:
ctx:base64裝置上下文。
out:存放解碼後的資料緩衝區。
outl:解碼後的資料長度。
in:解碼前的資料。
inl:解碼前的資料長度。
Ø EVP_DecodeFinal函式
原型:int EVP_DecodeFinal(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl);
功能:該函式將結構體ctx裡面剩餘的資料進行BASE64解碼並輸出到引數out指向的記憶體中,輸出資料長度為outl位元組。成功返回1,否則返回-1。
引數:
ctx:base64裝置上下文。
out:解碼後的資料。
outl:解碼後的資料長度。
Ø EVP_DecodeBlock函式
原型:int EVP_DecodeBlock(unsigned char *t, const unsigned char *f, int n);
功能:該函式將字串f中的n位元組資料進行BASE64解碼,並輸出到t指向的記憶體中,輸出資料長度為outl。成功返回解碼的資料長度,返回返回-1。
引數:
t:接收解碼後的資料緩衝區。
f:解碼前的資料。
n:解碼前的資料長度。相關推薦
Android中使用commons-codec-1.6.jar 進行Base64編解碼出現的問題
deb 分享 == 通過 HR common jar hive java 編碼時出現異常: java.lang.NoSuchMethodError: No static method encodeBase64String([B)Ljava/lang/String; i
在C語言中使用Libb64進行Base64編解碼
tar 語言 number const string ken doc get eof Libb64下載地址http://sourceforge.net/projects/libb64 以下為Demo CLibb64Demo.c #include <stdio.h&g
python3url編解碼base64編解碼ASE加解密
字元編解碼 Python3相對於Python2的一大改變就是,對預設字元型別進行了修改。Python2中定義字串預設為二進位制字串,強制加字首u的才是unicode字串;而Python3中字串預設為unicode,強制加字首b的才是二進位制字串。(也就是剛好反過來了) 這裡的二進位制字串:指
Java實現Base64編解碼
為什麼要用Base64編碼 在網路中傳輸資料都是使用ascii方式傳輸。對於一些圖片、視訊等資料,可能就會被編碼成ascii中不可見部分的編碼。網路中不同的路由裝置處理方式不同,有可能就會把這部分資料弄丟了。為了保證資料傳輸的正確性,可以使用Base64編碼將這些不可見資料編碼成可見資料。 Java實現B
python3字串base64編解碼
首先,Base64生成的編碼都是ascii字元。 其次,python3中字元都為unicode編碼,而b64encode函式的引數為byte型別,所以必須先轉碼。 s = "你好" bs = base64.b64encode(s.encode("utf-8")) # 將字元為unicode編碼轉換
python3的base64編解碼
-s == base64編碼 des 都是 itl bit 實現 python3 使用python3的base64編解碼實現字符串的簡易加密解密 引言: 在一些項目中,接口的報文是通過base64加密傳輸的,所以在進行接口自動化時,需要對所傳的參數進行base64編碼,
c語言通過openssl aes對稱加解密和base64編解碼將密碼儲存成密文
今天遇到這樣一個問題,將客戶端中的一個密碼儲存到檔案中以供下次使用,但是儲存的密碼不能直接儲存明文,需要進行加密處理,再三考慮之後,這個加密的過程需要雙向的可逆的過程,MD5等方式是不適用的,因為記住密碼意味著下次我還需要還原這個密碼進行使用,所以最後選擇了openssl的aes演算法,然而ae
delphi Base64 編解碼
Delphi 自帶了 Base64 編解碼的單元,叫 EncdDecd,這名字很拗口而且不直觀,估計這是一直很少人關注和知道的原因。 這個單元提供兩套四個公開函式: 對流的編解碼: procedure EncodeStream(Input, Output: TStrea
C++實現base64編解碼
將昨天的php程式碼改造成C++ /*base_64.h檔案*/ #ifndef BASE_64_H #define BASE_64_H /** * Base64 編碼/解碼 * @author liruixing */ class Base64{ private: std
[c++]base64編解碼 and image
//½«Í¼ÏñתΪbase64¸ñʽ vector&l
boost庫實現Base64編解碼
Base64介紹 Base64是一種基於64個可列印字元來表示二進位制資料的表示方法,從本質上看Base64編碼就是將三位元組轉換為四位元組,如果資料的長度不是3的整數倍,就要在後面補0再計算,每補2個0就再Base64串後加上1個‘=’。 boost庫Base64
base64編解碼原始碼解析
base64 decode const char * base64char = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";//可以自己定製,比如說把+和/改成-和_
PHP檔案讀寫,Base64編解碼
PHP讀寫檔案 //讀取檔案流 $fileData = file_get_contents("aaa.png"); //將檔案寫入本地 file_put_contents("bbb.png", $fileData); Base64編解碼 data=base6
Android實戰技巧之三十七:圖片的Base64編解碼
通常用Base64這種編解碼方式將二進位制資料轉換成可見的字串格式,就是我們常說的大串,10塊錢一串的那種,^_^。 Android的android.util包下直接提供了一個功能十分完備的Base64類供我們使用,下面就演示一下如何將一張圖片進行Base64
可以相互解密的C#版及C++版DES演算法程式碼(包括ECB、CBC模式,Zeros、PKCS7填充,以及Base64編解碼)
由於C#中對於DES演算法有標準類,所以使用起來特別簡單;但C++就有點費勁了,經過整合網上資源並修改bug,現在放出完整C++DES演算法程式碼,已測試通過。這裡要特別感謝http://blog.csdn.net/bengold1979/article/details/2
Base64編解碼(C++版) (轉)
標頭檔案h#include <string>using namespace std;class ZBase64{public: /*編碼 DataByte [in]輸入的資料長度,以位元組為單位 */ string Encode(const unsigned
C++ 實現圖片base64編解碼
最近使用人臉識別restfulAPI遇到了要求圖片base64編碼後傳輸問題。 藉此機會瞭解下什麼是base64編碼。 1 什麼是base64編碼 所謂Base64,就是說選出64個字元—-小寫字母a-z、大寫字母A-Z、數字0-9、符號”+”、”
BASE64編解碼
Openssl中用於base64編解碼的函式主要有: 1) 編碼函式 Ø EVP_EncodeInit函式 原型:void EVP_EncodeInit(EVP_ENCODE_CTX *ctx); 功能:該函式初始化一個用來進行base64編碼的結構,事實上,該函式只是簡單設定了結構裡面幾
Java實現BASE64編解碼 maven
Java語言提供了一個非常好的BASE64演算法的實現,即Apache Commons Codec工具包。其MAVEN配置如下, </dependency> <!-- https://mvnrepository.com/artifact/c
[紹棠_Swift] Swift中使用Base64編解碼
/// swift Base64處理 /** * 編碼 */ func base64Encoding(plainString:String)->String