当前位置: 首页 > news >正文

易语言与php加密AES,易语言调用openssl库实现aes cbc/cfb 256加密

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))

标签:none

相关文章:

  • linux安装php json拓展,Linux PHP增加JSON支持
  • php ajax实现图片预览,ajax怎么实现图片的预览上传以及查看缩略图
  • php ajax筛选,ajax商品筛选功能怎么进行判断
  • php curl_init 报错,如何解决curl_init php报错问题
  • php ?page,google chrome浏览器下载 PHP通用分页类pagephp[仿google分页]
  • php curl ssl错误,php curl常见错误:SSL错误、bool(false)
  • win2008系统php伪静态,ZBlog PHP在WIN2008 64位系统不能伪静态的解决方法
  • 常用PHP命令,PHP 常用命令行
  • python爬虫怎么自动下载图片,【图文详解】python爬虫实战——5分钟做个图片自动下载器...
  • 立方体相册代码php,3D相册制作代码
  • oracle问题如何解决方案,oracle问题解决方案汇总
  • oracle+dbca+创建失败,oracle dbca启动图形不成功的处理方法
  • oracle 只读方式打开文件,OracleDataGuard_备库以只读或读写方式打开访问
  • oracle导出一半报1046,Oracle 数据库1046事件
  • php级联删除怎么做,如何设置主键和外键,实现级联更新、级联删除
  • [deviceone开发]-do_Webview的基本示例
  • [LeetCode] Wiggle Sort
  • 【个人向】《HTTP图解》阅后小结
  • ES6系统学习----从Apollo Client看解构赋值
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • Markdown 语法简单说明
  • nfs客户端进程变D,延伸linux的lock
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • PHP CLI应用的调试原理
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • SpingCloudBus整合RabbitMQ
  • windows下如何用phpstorm同步测试服务器
  • yii2中session跨域名的问题
  • 复习Javascript专题(四):js中的深浅拷贝
  • 机器学习 vs. 深度学习
  • 入口文件开始,分析Vue源码实现
  • 深度学习入门:10门免费线上课程推荐
  • 跳前端坑前,先看看这个!!
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • 终端用户监控:真实用户监控还是模拟监控?
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • $GOPATH/go.mod exists but should not goland
  • (11)MSP430F5529 定时器B
  • (javascript)再说document.body.scrollTop的使用问题
  • (LeetCode C++)盛最多水的容器
  • (zhuan) 一些RL的文献(及笔记)
  • (论文阅读40-45)图像描述1
  • (算法)N皇后问题
  • (转) RFS+AutoItLibrary测试web对话框
  • . Flume面试题
  • .\OBJ\test1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'
  • .cfg\.dat\.mak(持续补充)
  • .NET 中各种混淆(Obfuscation)的含义、原理、实际效果和不同级别的差异(使用 SmartAssembly)
  • .net获取当前url各种属性(文件名、参数、域名 等)的方法
  • ::什么意思
  • @Builder用法
  • @基于大模型的旅游路线推荐方案
  • [2013AAA]On a fractional nonlinear hyperbolic equation arising from relative theory