`
sofire
  • 浏览: 143972 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

md5函数的学习程序

阅读更多
前面部分是库文件里面的例子,后面是我改的。
写起来和PHP差不多简单。呵呵,有例子就是好。

源程序里面定义编译不了:
    ubyte[4 * 1024] buffer;
我改成了
    ubyte[] buffer;
    buffer.length = 4 * 1024;
也许下面的写法更好些,谁知道呢?
    ubyte[] buffer = new ubyte[4 * 1024];

代码如下:

// This code is derived from the
// RSA Data Security, Inc. MD5 Message-Digest Algorithm.

import std.md5;

private import std.stdio;
private import std.string;
private import std.c.stdio;
private import std.c.string;

int main(char[][] args)
{
    foreach (char[] arg; args)
     MDFile(arg);

    MDString("Hello, D");

    return 0;
}

/* Digests a file and prints the result. */
void MDFile(char[] filename)
{
    FILE* file;
    MD5_CTX context;
    int len;
    //ubyte[4 * 1024] buffer;
    ubyte[] buffer;
    buffer.length = 4 * 1024;
    ubyte digest[16];

    if ((file = fopen(std.string.toStringz(filename), "rb")) == null)
    {
        writefln("%s can't be opened", filename);
    }
    else
    {
        context.start();
        while ((len = fread(cast(void*) buffer, 1, buffer.sizeof, file)) != 0)
            context.update(buffer[0 .. len]);
        context.finish(digest);
        fclose(file);

        writefln("MD5 File (%s) = %s", filename, digestToString(digest));
    }
}

/* Digest a string and prints the result. */
void MDString(char[] str)
{
    MD5_CTX context;
    ubyte digest[16];

    if (str.length)
    {
        context.start();
        context.update(str);
        context.finish(digest);

        if (str.length > 10)
            writefln("MD5 String (%s..) = %s", str[0..10], digestToString(digest));
        else
            writefln("MD5 String (%s) = %s", str, digestToString(digest));
    }
}
  • md5.zip (686 Bytes)
  • 下载次数: 4
分享到:
评论

相关推荐

    QQ登录器C++源代码(BCB2007)(含MD5算法及BASE64编码解码的C源代码)

    MD5Class: 完整的MD5码生成类和Base64编码解码函数. Tmqlgn.cfg: 保存QQ登录命令行(经过加密处理) 声明: 程序中的MD5算法和BASE64编码算法均来自互联网,经适当的改编封装而成,未经原作者许可, 请勿用于商业目的. ...

    Delphi的一个超级函数代码库

    一个完整的Hash算法单元,如MD5、CRC之类等等。 FastMM.pas  国外很著名的内存管理单元,Delphi2006的内存管理单元用的就是它。 FastStrings.pas  一个快速字符串处理单元,一些函数用汇编写的,处理速度比DELPHI...

    汇编语言程序设计大作业-走迷宫.md

    然后详细解释了程序的实现过程,包括代码结构、初始化设置、搜索函数、检查移动函数和输出路径函数。最后,作者总结了本次大作业的收获与挑战,并展望了未来的学习方向。整篇文章结构清晰,内容丰富,对于想要学习...

    一文教你如何构建静态链接库.md

    话说ISOC99有自己的一系列标准C函数库,例如我们熟悉的libc.a(包含标准I/O函数、字符串操作函数和整数数学函数)和libm.a(浮点数数学函数),可供我们在使用gcc编译工具编译程序时调用。那么,如果我们在日常学习...

    md格式编写的良心教程 Python 100天从新手到大师 共100个完整源文件 含课程源代码.rar

    构造程序逻辑.md Day01-15\06.函数和模块的使用.md Day01-15\07.字符串和常用数据结构.md Day01-15\08.面向对象编程基础.md Day01-15\09.面向对象进阶.md Day01-15\10.图形用户界面和游戏开发.md Day01-15\11.文件和...

    小程序api实现promise封装过程解析

    这篇文章主要介绍了小程序api实现...这里使用的MD5进行了token加密,最好还是把md5.js单独写下来(MD5函数js) 代码如下 var app = getApp(); // 引入app.js里初始化数据 var MD5 = require('./md5.js') function

    python-learning.zip

    06.函数和模块的使用.md 07.字符串和常用数据结构.md 08.面向对象编程基础.md 09.面向对急进阶.md 10.图形用户界面和游戏开发.md 11.文件和异常.md 12.字符串和正则表达式.md 13.进程和线程.md 14.网络编程入门和...

    -# Delphi.md

    通过学习Delphi的基本语法、变量和数据类型、控制流程和函数等内容,你将能够编写简单的Delphi程序并逐渐掌握更复杂的概念。继续学习和实践,你将能够开发出高质量、可靠的应用程序,并在Windows平台上实现各种功能...

    基于机器学习学校健康系统自动打卡程序

    实现原理实际上也不难,selenium其实就是模拟人工点击而已,Python的selenium库...下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 -------- -------------------------------------------

    微信小程序-微信小程序,demo模仿玩物志

    这个小作品是个人学习用,仅供学习参考! github地址:https://github.com/iamsongpeng/mini-program-store 待完善内容: 动态绑定标题 页面内刷新内容 马上购物和加入购物车按钮实现:sku商品组合 Sku算法,...

    MySQL学习笔记2-高级查询与存储.md

    通过学习可以掌握MySQL的高级查询方法,并能利用存储过程编写复杂程序逻辑,提高开发效率。 使用建议: 重点学习存储过程部分,逐行分析示例代码中的语法结构,并在MySQL中进行实际编写练习。也可以参考高级查询内容,...

    Spring_IoC入门笔记.md

    IOC的作用:降低程序间的偶合(依赖关系) 依赖关系的管理:以后都交给spring来维护 在当前类需要用到其他类的对象时,由spring为我们提供,我们只需在配置文件中说明 依赖关系的维护:就称之为依赖注入 依赖...

    Ruby语言教程.md

    通过学习Ruby的基本语法、变量和数据类型、控制流程和函数等内容,你将能够编写简单的Ruby程序并逐渐掌握更复杂的概念。继续学习和实践,你将能够开发出优雅、高效的软件,并在各个领域展现出色的能力。祝你在学习...

    Rust语言教程.md

    通过学习Rust的基本语法、变量和数据类型、控制流程和函数等内容,你将能够编写简单的Rust程序并逐渐掌握更复杂的概念。继续学习和实践,你将能够开发高效、安全的软件,并在各种应用程序领域展现出色的能力。祝你在...

    Kotlin语言教程.md

    通过学习Kotlin的基本语法、变量和数据类型、数学运算、控制流程和函数等内容,你将能够编写简单的Kotlin程序并逐渐掌握更复杂的概念。继续学习和实践,你将能够应用Kotlin开发各种类型的应用程序,并享受到编程的...

Global site tag (gtag.js) - Google Analytics