1. 程式人生 > >lua之base64加密和解密演算法。

lua之base64加密和解密演算法。

local function encodeBase64(source_str)
    local b64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
    local s64 = ''
    local str = source_str
 
    while #str > 0 do
        local bytes_num = 0
        local buf = 0
 
        for byte_cnt=1,3 do
            buf = (buf * 256)
            if #str > 0 then
                buf = buf + string.byte(str, 1, 1)
                str = string.sub(str, 2)
                bytes_num = bytes_num + 1
            end
        end
 
        for group_cnt=1,(bytes_num+1) do
            local b64char = math.fmod(math.floor(buf/262144), 64) + 1
            s64 = s64 .. string.sub(b64chars, b64char, b64char)
            buf = buf * 64
        end
 
        for fill_cnt=1,(3-bytes_num) do
            s64 = s64 .. '='
        end
    end
 
    return s64
end
 
local function decodeBase64(str64)
    local b64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
    local temp={}
    for i=1,64 do
        temp[string.sub(b64chars,i,i)] = i
    end
    temp['=']=0
    local str=""
    for i=1,#str64,4 do
        if i>#str64 then
            break
        end
        local data = 0
        local str_count=0
        for j=0,3 do
            local str1=string.sub(str64,i+j,i+j)
            if not temp[str1] then
                return
            end
            if temp[str1] < 1 then
                data = data * 64
            else
                data = data * 64 + temp[str1]-1
                str_count = str_count + 1
            end
        end
        for j=16,0,-8 do
            if str_count > 0 then
                str=str..string.char(math.floor(data/math.pow(2,j)))
                data=math.mod(data,math.pow(2,j))
                str_count = str_count - 1
            end
        end
    end
 
    local last = tonumber(string.byte(str, string.len(str), string.len(str)))
    if last == 0 then
        str = string.sub(str, 1, string.len(str) - 1)
    end
    return str
end

相關推薦

luabase64加密解密演算法

local function encodeBase64(source_str) local b64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' local

luabase64加密解密算法

nco 解密 data def group onu PQ html num local function encodeBase64(source_str) local b64chars = ‘ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk

base64加密解密

前端js加密 var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; function base64encode(str) { var out

常見的加密解密演算法—MD5

Java MD5加密 常見的加密和解密演算法—MD5 一、MD5加密概述 Message Digest Algorithm MD5(中文名為訊息摘要演算法第五版)為電腦保安領域廣泛使用的一種雜湊函式,用以提供訊息的完整性保護。該演算法的檔案號為RFC 1321(R.Rivest,MI

Java常見加密解密演算法

1:加密和解密輔助工具類: /** * byte hex utility class **/ public class ByteHexUtils { private static final String HEX_STR = "0123456789

python中base64加密解密

base64加密和解密有點頭疼,必須要記錄下來,以後忘了也能再來複習下 當然啦,能一直記住是最好的…加油吧,少年(其實已經好老了) 操作環境 win10,python3 base的原理 簡單小案例 其實它的原理不是很難,以下是幾個小案例 import base

C語言字串加密解密演算法

在本例項中要求設計一個加密和解密演算法。在對一個指定的字串加密之後,利用解密函式能夠對密文解密,顯示明文資訊。加密的方式是將字串中每個字元加上它在字串中的位置和一個偏移值 5。以字串“mrsoft”為例,第一個字元“m”在字串中的位置為 0,那麼它對應的密文是“‘m’+0+5",即 r。

MD5的加密解密演算法

先解釋下:MD5是不可逆,這裡的加密解密,你可以看到是對MD5演算法先加密後解密,而不是對MD5的解密package com.test; import java.security.MessageDigest; public class DecryptMD5 { /

Java實現Base64加密解密

Base64是一種編碼格式,而不是演算法。 首先引入Base64類庫的maven依賴 <dependency> <groupId>com.xiaoleilu</groupId> <

【iOS】MD5(加密)/AES/Base64加密解密

MD5 什麼是MD5 Message Digest Algorithm MD5(中文名為訊息摘要演算法第五版)為電腦保安領域廣泛使用的一種雜湊函式,用以提供訊息的完整性保護。MD5的典型應用是對一段資訊(Message)產生資訊摘要(Message-Di

js的常見的三種密碼加密方式-MD5加密Base64加密解密sha1加密詳解總結

寫在前面寫前端的時候,很多的時候是避免不了註冊這一關的,但是一般的註冊是沒有任何的難度的,無非就是一些簡單的獲取使用者輸入的資料,然後進行簡單的校驗以後呼叫介面,將資料傳送到後端,完成一個簡單的註冊的流程,那麼一般來說,密碼是不做加密的。但是也有一些資料庫裡面存放的是加密後的

iOS開發-Objective-c的AES加密解密演算法的實現

話不多說,直接上程式碼 .h import <Foundation/Foundation.h> @interface LanAES : NSObject +(NSData *)AES256ParmEncryptWithKey:(NSString *

運維學習加密解密

運維 網絡 安全 運維學習之加密與解密: 眾所周知,在網絡的世界裏不存在絕對的安全性。各種釣魚網站,病毒等等危害著我們的網絡環境。所以,作為一個運維人員,在我們利用網絡進行通信時,保證通信的機密性、完整性、可用性是必要的。 我們的日常生活中有以下三點威脅網絡安全的行為: 1.威脅

系統安全數據的加密解密、CA的介紹、SSL或TLS協議簡介及握手過程

網絡運維 網絡通信需要安全 所謂的網絡通信就是進程與進程之間的通信 然而進程的通信一般可以分成兩類:1、同一主機之間的進程通信

Java Base64加密解密

edt .com 比較 兩個 word mis 表示 而且 .get 鏈接https://blog.csdn.net/longguangfu8/article/details/78948213 關於base64編碼Encode和Decode編碼的幾種方式 Base64是一種

最全加密演算法對稱加密非對稱加密

常見加密演算法 : DES(Data Encryption Standard):資料加密標準,速度較快,適用於加密大量資料的場合;  3DES(Triple DES):是基於DES,對一塊資料用三個不同的金鑰進行三次加密,強度更高; RC2和 RC4:用變長金鑰對大量資

使用PHP實現RSA演算法加密解密

本文提供使用RSA演算法加密解密資料的PHP程式類(簽名和驗籤的實現方式可以檢視使用PHP實現RSA演算法的簽名和驗籤 這篇文章),封裝了格式化公鑰和私鑰檔案的方法,這樣無論使用什麼格式的公鑰或者私鑰都可以正常執行,公鑰加密後使用私鑰解密或者私鑰加密後用公鑰解密

獲取數字證書相關資訊,證書有效性驗證,RSA加密解密功能獲取證書相關資訊

//公鑰 private PublicKey pk; /** 後臺將證書以byte陣列的形式傳入 * @param bytes,數字證書crt傳入的byte陣列 * @return */ public InfoEntity getCertificateInfo(

IOS成長路-DES+Base64 加密解密

DES是一種分組資料加密技術(先將資料分成固定長度的小資料塊,之後進行加密),速度較快,適用於大量資料加密 3DES是一種基於DES的加密演算法,使用3個不同密匙對同一個分組資料塊進行3次加密,如此以使得密文強度更高。 相較於DES和3DES演算法而言,AES演算

java的對稱加密演算法 AES -----加密解密

背景 隨著對稱密碼的發展,DES資料加密標準演算法由於金鑰長度較小(56位),已經不適應當今分散式開放網路對資料加密安全性的要求,因此1997年NIST公開徵集新的資料加密標準,即AES[1]。經過三輪的篩選,比利時Joan Daeman和Vincent Rijmen提