const
validchars = 'abcdefghijklmnopqrstuvwxyz234567';
// base32解碼
function base32decode(const source: string): string;
var uppersource: string;
p, i, l, n, j: integer;
begin
uppersource := uppercase(source);
l := length(source);
n := 0;
j := 0;
result := '';
for i := 1 to l do
begin
n := n shl 5; // move buffer left by 5 to make room
p := pos(uppersource[i], validchars);
if p >= 0 then
n := n + (p - 1); // add value into buffer
j := j + 5; // keep track of number of bits in buffer
if (j >= 8) then
begin
j := j - 8;
result := result + chr((n and ($ff shl j)) shr j);
end;
end;
end;
// base32編碼
function base32encode(str: utf8string): string;
var b: int64;
i, j, len: integer;
begin
result := '';
//每5個字元一組進行編碼(5個字元x8=40位,5位*8字元=40位,base32每個字元用5位表示)
len := length(str);
while len > 0 do
begin
if len >= 5 then
len := 5;
//將這5個字元的ascii碼按順序存放到int64(共8個位元組)整數中
b := 0;
for i := 1 to len do
b := b shl 8 + ord(str[i]); //存放乙個字元,左移乙個位元組(8位)
b := b shl ((8 - len) * 8); //最後再左移3個位元組(3*8)
j := system.math.ceil(len * 8 / 5);
//編碼,每5位表示乙個字元,8個字元剛好是40位
for i := 1 to 8 do
begin
if i <= j then
begin
result := result + validchars[b shr 59 + 1]; //右移7*8位+3位,從base32表中取字元
b := b shl 5; //每次左移5位
endelse
result := result + '=';
end;
//去掉已處理的5個字元
delete(str, 1, len);
len := length(str);
end;
end;
使用 STM32 加密思考
使用系統啟動程式stm32 flash loader demonstrator將flash設定為讀保護。所有以除錯工具 內建sram或fsmc執行 等方式對主儲存器訪問的操作將被禁止,只允許使用者 對主flash儲存器的讀操作和程式設計操作 除了flash開始的4kb區域不能程式設計 使用者 允許自...
STM32使用mbedtls的AES加密
轉到keil官網 找到arm mbed cryptographic and ssl tls library for cortex m devices 載入mbedtls 修改mbedtls config.件。需要啟用的巨集如下。define mbedtls aes rom tables define...
STM32使用mbedtls的AES加密
author 果果小師弟 電子資訊專業在讀研究生 有一點思考,有一點想法,有一點理性!定個小小目標,努力成為習慣!在最美的年華遇見更好的自己!csdn 果果小師弟,csdn首發,果果原創 轉到keil官網載入mbedtls 2.修改mbedtls config.件。需要啟用的巨集如下。define ...