Skip to content

Latest commit

 

History

History
168 lines (108 loc) · 4.73 KB

README.md

File metadata and controls

168 lines (108 loc) · 4.73 KB

lua53-AES

非原创。搬运,解读,应用。 增加PKCS7 Padding。

纯Lua实现,测试Lua 5.3,支持EBC/CBC、Zero/PKCS7 Padding,AES-128 bit。

引入库

  • clone至文件夹AES 如:ZeroBraneStudio\lualibs\AES\
  • 代码中require 'AES'
  • 需要包解析路径包含?\?.lua

主要文件和函数:

AES.lua

BaseFun_AES = AES_Class,后续简称AES。 需实例化后使用,实例化方法为AES:new(),后续实例简称aes。

set_key

AES:set_key(key , keylen)

内部使用。

  • key:密钥。字节数组
  • keylen:密钥长度——16 / 24 / 32 (128/192/256bits)。

参见GetStringKey

encrypt

内部使用。

aes:encrypt(plain , pPos , cipher , cPos)

decrypt

内部使用。

aes:decrypt(cipher , pPos , plain , cPos)

ecb_EncryptDecrypt

strData_output = aes:ecb_EncryptDecrypt(strData , strKey , bEncrypt, padding)

  • strData :字符串。
  • bEncrypt:加密/解密。布尔。true - Encrypt,false - Decrypt。
  • strData_output:字符串。
  • padding:
    • false/nil/"ZERO"
    • "PKCS7"
Encrypt Decrypt
bEncrypt true false
strData plain cipher
strData_output cipher plain

cbc_EncryptDecrypt

strData_output = aes:cbc_EncryptDecrypt(strData , strKey , strIV , bEncrypt, padding)

  • strData :字符串。
  • bEncrypt:加密/解密。布尔。true - Encrypt,false - Decrypt。
  • strIV:初始向量。字符串。
  • strData_output:字符串。
  • padding:
    • false/nil/"ZERO"
    • "PKCS7"
Encrypt Decrypt
bEncrypt true false
strData plain cipher
strData_output cipher plain

GetStringKey

byteList_key = AES.GetStringKey(strKey)

内部使用。 包含“零填充”,填充至16/24/32位。 填充后传递给set_key

GetBlockList

byteList_data= = GetBlockList(strData, strPadding)

strPadding:

  • false/nil/"ZERO"
  • "PKCS7"

内部使用。

其他函数

略。

test.lua

  • Plain_ByteList:常量,标准值。明文。字节数组。 原名AES_EData(Encrypt Data?)。
  • Cipher_ByteList:常量,标准值。密文。字节数组。 原名AES_DData(Decrypt Data?)。
  • plain_ByteList:返回的结果。明文。字节数组
  • cipher_ByteList:返回的结果。密文。字节数组
  • plain_Str:返回的结果。密文。字符串。
  • ciyher_Str:返回的结果。密文。字符串。

util.lua

toHexString

byteList_HexString = toHexString(data)

  • data:支持32位number、number in tablestring
  • byteList_HexString :形如'01 02 .. FF'

aeslua/util.lua at master · bighil/aeslua (github.com)

bytesToHex

str = byteListToString(byteList)

包含可用功能:

  • padByteString / unpadByteString:使用到随机数,貌似为ISO10126。
  • getByte: get byte at position index
  • putByte: put number into int at position index
  • bytesToInts: convert byte array to int array
  • intsToBytes: convert int array to byte array

术语

字节数组 形如{0x01,0x02,..}

其他库

bighil/aeslua: Implementation of aes in nearly pure lua (bitlib is required) (github.com)

支持AES128 / AES192 / AES256、ECB/CBC/OFB/CFB,Padding with ISO10126? 有多个测试例。

问题:

工具

AES在线解密 AES在线加密 Aes online hex 十六进制密钥 - The X 在线工具 (the-x.cn)