CryptoAPI 對資料Base64編碼解碼
對資料進行Base64編碼解碼
只會用到
1.CryptBinaryToString
2.CryptStringToBinary
函式的引數及引數講解請參考: 點選檢視
#include <stdio.h>
#include <windows.h>
#include <wincrypt.h>
#pragma comment(lib,"crypt32.lib")
int main()
{
BYTE *pbBuffer = (BYTE*)"武漢";
DWORD dwBufferLen = strlen((char*)pbBuffer);
char *chBase64Data = NULL;
DWORD dwBase64DataLen = 0;
BYTE *pbOutBuffer = NULL;
DWORD dwOutBufferLen = 0;
do
{
if (!CryptBinaryToStringA(pbBuffer,dwBufferLen,CRYPT_STRING_BASE64,NULL,&dwBase64DataLen))
{
printf("獲取編碼後的資料長度失敗\n");
break;
}
chBase64Data = (char*)malloc(dwBase64DataLen+1);
if (chBase64Data!=NULL)
{
memset(chBase64Data,0x00,dwBase64DataLen+1);
}else{
printf("分配記憶體失敗\n");
break;
}
if (!CryptBinaryToStringA(pbBuffer,dwBufferLen,CRYPT_STRING_BASE64,chBase64Data,&dwBase64DataLen))
{
printf("Base64編碼失敗\n");
break;
}
printf("Base64編碼:%s\n",chBase64Data);
if (!CryptStringToBinaryA(chBase64Data,dwBase64DataLen,CRYPT_STRING_BASE64,NULL,&dwOutBufferLen,NULL,NULL))
{
printf("獲取解碼資料長度失敗\n");
break;
}
pbOutBuffer = (BYTE*)malloc(dwOutBufferLen+1);
if (pbOutBuffer!=NULL)
{
memset(pbOutBuffer,0x00,dwOutBufferLen+1);
}else{
printf("分配記憶體失敗\n");
break;
}
if (!CryptStringToBinaryA(chBase64Data,dwBase64DataLen,CRYPT_STRING_BASE64,pbOutBuffer,&dwOutBufferLen,NULL,NULL))
{
printf("Base64解碼失敗\n");
}
printf("Base64解碼%s\n",(char*)pbOutBuffer);
} while (0);
if (chBase64Data)
{
free(chBase64Data);
chBase64Data = NULL;
}
if (pbOutBuffer)
{
free(pbOutBuffer);
pbOutBuffer = NULL;
}
return 0;
}
CryptStringToBinary這個方法的第三個引數有CRYPT_STRING_BASE64HEADER 我一般情況下是用來對一個Base64匯出的證書讀取時用到, 一段數字證書Base64資料開始結尾會存在:
-----BEGIN CERTIFICATE-----和-----END CERTIFICATE-----
傳入CRYPT_STRING_BASE64HEADER會自動過濾掉那兩段資料對證書進行解碼
相關文章
- Base64 編碼解碼原理
- Base64編碼與解碼程式碼例項
- 用JS進行Base64編碼、解碼JS
- Base64編碼
- Base64編碼知識詳解
- Rust中字串的base64編碼與解碼Rust字串
- C#實現Base64編碼與解碼
- 【字元編碼】字元編碼 && Base64編碼演算法字元演算法
- base64 編碼原理
- 深入瞭解圖片Base64編碼
- 從原理上搞定編碼-- Base64編碼
- Base64系列第二篇 python中使用Base64編碼解碼Python
- Oracle blob型別資料轉換成 base64編碼Oracle型別
- Android資料加密之Base64編碼演算法Android加密演算法
- 計算機編碼規則之:Base64編碼計算機
- 【字元編碼系列】Base64編碼原理以及實現字元
- JavaScript base64解碼程式碼JavaScript
- Notepad++外掛Base64編解碼
- Java之Base64編碼解析Java
- Java 8中的Base64編碼和解碼Java
- 【Java小工匠】密碼學--base64編碼Java密碼學
- 當微信小程式遇上TensorFlow:接收base64編碼影象資料微信小程式
- PHP安全的URL字串base64編碼和解碼PHP字串
- Postman進行簡單的base64編碼解碼請求測試Postman
- JS 簡單實現UTF-8編碼,Base64編碼JS
- rust實戰系列-base64編碼Rust
- Java Base64編碼使用介紹Java
- base64編碼原理和函式函式
- Base64編碼的全面介紹
- js裡對URL進行編碼、解碼JS
- android Java BASE64編碼和解碼一:基礎AndroidJava
- Base64自定義編碼表及破解
- base64編碼的原理及實現
- Protocol Buffer技術詳解(資料編碼)Protocol
- Javascript 將圖片的絕對路徑轉換為base64編碼JavaScript
- 用於將位元組進行base64編碼或解碼(C語言實現)C語言
- Base64 編碼的程式設計使用.md程式設計
- 將ttf檔案base64編碼後使用