AES分块加密,每块16字节,IV大小等于块大小,key大小等于加密强制128/256位。
自定义数据类型:
.版本 2
.数据类型 AES_KEY
.成员 rd_key, 整数型, , "60"
.成员 rounds, 整数型
自定义DLL命令:
.版本 2
.DLL命令 AES_set_encrypt_key, 整数型, "libeay32.dll", "@AES_set_encrypt_key", , int AES_set_encrypt_key(const unsigned char *userKey, const int bits, AES_KEY *key);
.参数 userKey, 文本型, 传址
.参数 bits, 整数型
.参数 key, AES_KEY, 传址
.DLL命令 AES_set_decrypt_key, 整数型, "libeay32.dll", "@AES_set_decrypt_key", , int AES_set_decrypt_key(const unsigned char *userKey, const int bits, AES_KEY *key);
.参数 userKey, 文本型, 传址
.参数 bits, 整数型
.参数 key, AES_KEY, 传址
.DLL命令 AES_cbc_encrypt, , "libeay32.dll", "@AES_cbc_encrypt", , void AES_cbc_encrypt(const unsigned char *in, unsigned char *out, size_t length, const AES_KEY *key, unsigned char *ivec, const int enc);
.参数 in, 字节集
.参数 out, 字节集
.参数 length, 整数型
.参数 key, AES_KEY
.参数 ivec, 字节集
.参数 enc, 整数型
.DLL命令 AES_cfb_encrypt, , "libeay32.dll", "@AES_cfb128_encrypt", , void AES_cfb128_encrypt(const unsigned char *in, unsigned char *out, size_t length, const AES_KEY *key, unsigned char *ivec, int *num, const int enc)
.参数 in, 字节集, 传址
.参数 out, 字节集, 传址
.参数 length, 整数型
.参数 key, AES_KEY, 传址
.参数 ivec, 字节集, 传址
.参数 int, 整数型, 传址
.参数 enc, 整数型
AES CBC加解密,须补码:
.版本 2
.支持库 dp1
.支持库 spec
.子程序 AES_CBC
.局部变量 key, AES_KEY
.局部变量 output, 字节集
.局部变量 iv, 字节集
.局部变量 len, 整数型
.局部变量 source, 字节集
.局部变量 key_str, 文本型
.版本 2
.支持库 dp1
.支持库 spec
'iv 16字节
iv = 到字节集 (取文本左边 (取数据摘要 (到字节集 (“iv”)), 16))
source = 到字节集 (“data”)
'加密强度256位,密钥取32字节
key_str = 取文本左边 (取数据摘要 (到字节集 (“key”)), 32)
.如果真 (AES_set_encrypt_key (key_str, 256, key) < 0)
返回 ()
.如果真结束
'补码
len = 取字节集长度 (source)
.计次循环首 (16 - len % 16, )
source = source + { 0 }
.计次循环尾 ()
调试输出 (source)
len = 取字节集长度 (source)
output = 取空白字节集 (len)
AES_cbc_encrypt (source, output, len, key, iv, 1)
调试输出 (“en”, output)
.如果真 (AES_set_decrypt_key (key_str, 256, key) < 0)
返回 ()
.如果真结束
iv = 到字节集 (取文本左边 (取数据摘要 (到字节集 (“iv”)), 16))
source = output
output = 取空白字节集 (len)
AES_cbc_encrypt (source, output, len, key, iv, 0)
调试输出 (“de”, output)
调试输出 (到文本 (output))
AES CFB加解密,无须补码,加密数据等于原始数据大小:
.版本 2
.支持库 dp1
.支持库 spec
.子程序 AES_CFB
.局部变量 key, AES_KEY
.局部变量 output, 字节集
.局部变量 iv, 字节集
.局部变量 len, 整数型
.局部变量 source, 字节集
.局部变量 key_str, 文本型
.局部变量 n, 整数型
iv = 到字节集 (取文本左边 (取数据摘要 (到字节集 (“iv”)), 16))
source = 到字节集 (到字节集 (“data”))
key_str = 取文本左边 (取数据摘要 (到字节集 (“key”)), 32)
.如果真 (AES_set_encrypt_key (key_str, 256, key) < 0)
返回 ()
.如果真结束
len = 取字节集长度 (source)
output = 取空白字节集 (len)
AES_cfb_encrypt (source, output, len, key, iv, n, 1)
调试输出 (“en”, output)
'cfb下设解密key也用AES_set_encrypt_key
.如果真 (AES_set_encrypt_key (key_str, 256, key) < 0)
返回 ()
.如果真结束
iv = 到字节集 (取文本左边 (取数据摘要 (到字节集 (“iv”)), 16))
source = output
output = 取空白字节集 (len)
n = 0
AES_cfb_encrypt (source, output, len, key, iv, n, 0)
调试输出 (output)
调试输出 (“de”, 到文本 (output))
PHP版AES CBC/CFB加解密,与易语言版兼容。