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

[开源]用MQL4实现MD5加密

本文转载自博客园:混沌的世界

原文地址:http://www.cnblogs.com/niniwzw/archive/2009/12/05/1617685.html

 

 

     在用MQL4进行金融交易的时候,经常需要发送账号信息到服务器。这些密码一般用明文发送,很容易被拦截,如果真实的账户信息被盗,后果不堪设想。钱的问题都不是小问题。今天下午,我老婆去上海了,闲着没有事情,就贡献一个吧。

    MD5 的算法非常的简单,如果想了解相关的算法请参考:RFC 1321。我的算法 基本上 遵照这个标准进行编写。

具体代码在: http://code.google.com/p/md5-in-mql4/

    这个算法的效率简单测试了一下,大概是C原始版本的 1/10 的速度。

    这个算法只是针对字符串的MD5 进行了优化,字符串可以支持 MQL4 中最长的字符串。如果是对大文件进行MD5 进行加密,请稍微改进一下这个算法,我在设计的时候,也做了考虑,你可以很快的转换过来。

    对于脚本语言实现 MD5 加密,最麻烦的就是 右移的问题,请参考文章:用 int 类型实现  unsinged int 形式 的 右移操作 。PHP 中,可以类似的进行处理,但是JS 中,提供了 >>> 操作符,不需要用我的方法。

    如果,你想用其他的脚本语言来实现,如JS,要注意 加法的安全性,我预留了一个函数:AddUnsigned 这个函数,对MQL4 可以直接加,但是对某些JS的解析器

可能会出现问题,但是修复的方法也很简单,就是把 前 16位相加,然后 把后16位进行相加。注意前16位的进位:

    var lsw = (x & 0xFFFF) + (y & 0xFFFF);
    var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
    (msw << 16) | (lsw & 0xFFFF);

    还有,如果,你是网上下载过来的算法,还要注意测试 中文情况下的准确性,很多算法没有考虑 中文。

    虽然,各种语言差别不大,但是,也要考虑语言的差异,做到性能最优化。

    现在网上有一些字典破解MD5的网站,其实,现在你不要怕他们了,你把算法中 初始的 a, b ,c, d  改一下,就变成一种新的加密算法了。

这就是你自己写算法的好处。

转载于:https://www.cnblogs.com/yangwujun/p/4442434.html

相关文章:

  • 清除浮动
  • zabbix监控mysql主从状态
  • 大整数算法[12] 有符号乘法
  • 多线程(七)---多线程同步相关问题
  • java基础入门1到100的奇数求和
  • 清除Css中select的下拉箭头样式
  • android中webview携带cookie以及webview所加载网页中js调用java方法问题
  • 模拟 ZOJ 3878 Convert QWERTY to Dvorak
  • 【Java每日一题】20170322
  • JavaScript中的对象复制(Object Clone)
  • C#后台传入数据JS接收
  • petstore-jdbc
  • css3 动画
  • [OS] linux常见问题汇总
  • Lua 程序设计 (Roberto,Ierusalimschy 著)
  • Babel配置的不完全指南
  • ES6简单总结(搭配简单的讲解和小案例)
  • Golang-长连接-状态推送
  • Hexo+码云+git快速搭建免费的静态Blog
  • mysql 5.6 原生Online DDL解析
  • python学习笔记 - ThreadLocal
  • React Native移动开发实战-3-实现页面间的数据传递
  • React-redux的原理以及使用
  • Vue.js-Day01
  • 从setTimeout-setInterval看JS线程
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • 基于游标的分页接口实现
  • 批量截取pdf文件
  • 漂亮刷新控件-iOS
  • 前端技术周刊 2018-12-10:前端自动化测试
  • 悄悄地说一个bug
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 设计模式 开闭原则
  • 系统认识JavaScript正则表达式
  • 线上 python http server profile 实践
  • 一个SAP顾问在美国的这些年
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • ​低代码平台的核心价值与优势
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • #Java第九次作业--输入输出流和文件操作
  • #前后端分离# 头条发布系统
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (31)对象的克隆
  • (day 12)JavaScript学习笔记(数组3)
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (十一)手动添加用户和文件的特殊权限
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • .Mobi域名介绍
  • .net core 6 集成 elasticsearch 并 使用分词器
  • .NET Core 中插件式开发实现
  • .NET DevOps 接入指南 | 1. GitLab 安装
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)