设为首页收藏本站淘宝杂货铺

从F到0 - From F to 0

 找回密码
 注册已关闭
搜索
查看: 2705|回复: 0
收起左侧

易语言通过密码循环MD5加密+数据与MD5字节值异或实现字节集的对称加解密一体子程序

[复制链接]
发表于 2019-4-18 17:08:02 | 显示全部楼层 |阅读模式



  1. .版本 2
  2. .支持库 spec
  3. .支持库 internet
  4. .支持库 dp1

  5. .程序集 程序集1

  6. .子程序 _启动子程序, 整数型, , 请在本子程序中放置易模块初始化代码

  7. ' PHP算法:https://www.fedcba9876543210.com/thread-1802-1-1.html (配套使用)

  8. _临时子程序 ()  ' 在初始化代码执行完毕后调用测试代码
  9. 返回 (0)  ' 可以根据您的需要返回任意数值

  10. .子程序 _临时子程序
  11. .局部变量 加密后, 字节集

  12. ' 本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。 ***注意不要修改本子程序的名称、参数及返回值类型。
  13. 调试输出 (到文本 (对称加解密_MD5 (HTTP读文件 (“http://127.0.0.1/dxead.php”), “1234567”)))  ' PHP文件请注意删除头尾的空格、回车等否则会解密错误


  14. .子程序 对称加解密_MD5, 字节集, 公开, 密码循环MD5加密+异或MD5字节值的数据对称加解密程序
  15. .参数 数据, 字节集, , 要加密或解密的字节集数据
  16. .参数 密码, 文本型, , 必须使用一致的密码才可以解密出正确的数据
  17. .局部变量 哈希, 字节集
  18. .局部变量 长度, 整数型
  19. .局部变量 块, 整数型
  20. .局部变量 计数, 整数型
  21. .局部变量 计数2, 整数型
  22. .局部变量 返回值, 字节集

  23. 哈希 = 到字节集 (密码)
  24. 长度 = 取字节集长度 (数据)
  25. 块 = 到整数 (长度 ÷ 16) + 1
  26. 返回值 = 取空白字节集 (长度)
  27. .循环判断首 ()
  28.     哈希 = 十六进制到字节集 (取数据摘要 (哈希))
  29.     .计次循环首 (选择 (块 = 1, 长度 % 16, 16), 计数)
  30.         计数2 = 计数2 + 1
  31.         返回值 [计数2] = 位异或 (数据 [计数2], 哈希 [计数])
  32.     .计次循环尾 ()
  33.     块 = 块 - 1
  34. .循环判断尾 (块 > 0)
  35. 返回 (返回值)


  36. .子程序 十六进制到字节集, 字节集
  37. .参数 文本, 文本型
  38. .局部变量 计数, 整数型
  39. .局部变量 返回值, 字节集
  40. .局部变量 计数2, 整数型
  41. .局部变量 文本长度, 整数型

  42. 文本长度 = 取文本长度 (文本)
  43. .如果真 (位与 (文本长度, 1) = 1)
  44.     输出调试文本 (“十六进制文本转字节集不得为奇数字节。”)
  45.     返回 ({  })
  46. .如果真结束
  47. 返回值 = 取空白字节集 (文本长度 ÷ 2)
  48. .变量循环首 (1, 文本长度, 2, 计数)
  49.     计数2 = 计数2 + 1
  50.     返回值 [计数2] = 文本型_二位十六进制到字节型 (取文本中间 (文本, 计数, 2))
  51. .变量循环尾 ()
  52. 返回 (返回值)


  53. .子程序 文本型_二位十六进制到字节型, 字节型
  54. .参数 十六进制文本, 文本型

  55. 十六进制文本 = 到大写 (取文本左边 (十六进制文本, 2))
  56. 返回 (位或 (左移 (文本型_一位十六进制到十进制 (取文本左边 (十六进制文本, 1)), 4), 文本型_一位十六进制到十进制 (取文本右边 (十六进制文本, 1))))


  57. .子程序 文本型_一位十六进制到十进制, 字节型
  58. .参数 十六进制文本, 文本型
  59. .局部变量 十六进制文本2, 文本型
  60. .局部变量 计数, 整数型

  61. 十六进制文本 = 到大写 (取文本左边 (十六进制文本, 1))
  62. 十六进制文本2 = “0123456789ABCDEF”
  63. .计次循环首 (16, 计数)
  64.     .如果真 (取文本中间 (十六进制文本2, 计数, 1) = 十六进制文本)
  65.         返回 (计数 - 1)
  66.     .如果真结束

  67. .计次循环尾 ()
  68. 输出调试文本 (“发现不是十六进制的字符。”)
  69. 返回 (0)



复制代码

相关帖子

您需要登录后才可以回帖 登录 | 注册已关闭

本版积分规则

QQ|手机版|Archiver|从F到0 ( 蒙ICP备17002595号-1 )
蒙公网安备15010402000325号

腾讯云安全认证

GMT+8, 2024-4-26 04:52 , Processed in 0.979056 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表