前面部分是库文件里面的例子,后面是我改的。
写起来和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));
}
}
分享到:
相关推荐
MD5Class: 完整的MD5码生成类和Base64编码解码函数. Tmqlgn.cfg: 保存QQ登录命令行(经过加密处理) 声明: 程序中的MD5算法和BASE64编码算法均来自互联网,经适当的改编封装而成,未经原作者许可, 请勿用于商业目的. ...
一个完整的Hash算法单元,如MD5、CRC之类等等。 FastMM.pas 国外很著名的内存管理单元,Delphi2006的内存管理单元用的就是它。 FastStrings.pas 一个快速字符串处理单元,一些函数用汇编写的,处理速度比DELPHI...
然后详细解释了程序的实现过程,包括代码结构、初始化设置、搜索函数、检查移动函数和输出路径函数。最后,作者总结了本次大作业的收获与挑战,并展望了未来的学习方向。整篇文章结构清晰,内容丰富,对于想要学习...
话说ISOC99有自己的一系列标准C函数库,例如我们熟悉的libc.a(包含标准I/O函数、字符串操作函数和整数数学函数)和libm.a(浮点数数学函数),可供我们在使用gcc编译工具编译程序时调用。那么,如果我们在日常学习...
构造程序逻辑.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实现...这里使用的MD5进行了token加密,最好还是把md5.js单独写下来(MD5函数js) 代码如下 var app = getApp(); // 引入app.js里初始化数据 var MD5 = require('./md5.js') function
06.函数和模块的使用.md 07.字符串和常用数据结构.md 08.面向对象编程基础.md 09.面向对急进阶.md 10.图形用户界面和游戏开发.md 11.文件和异常.md 12.字符串和正则表达式.md 13.进程和线程.md 14.网络编程入门和...
通过学习Delphi的基本语法、变量和数据类型、控制流程和函数等内容,你将能够编写简单的Delphi程序并逐渐掌握更复杂的概念。继续学习和实践,你将能够开发出高质量、可靠的应用程序,并在Windows平台上实现各种功能...
实现原理实际上也不难,selenium其实就是模拟人工点击而已,Python的selenium库...下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 -------- -------------------------------------------
这个小作品是个人学习用,仅供学习参考! github地址:https://github.com/iamsongpeng/mini-program-store 待完善内容: 动态绑定标题 页面内刷新内容 马上购物和加入购物车按钮实现:sku商品组合 Sku算法,...
通过学习可以掌握MySQL的高级查询方法,并能利用存储过程编写复杂程序逻辑,提高开发效率。 使用建议: 重点学习存储过程部分,逐行分析示例代码中的语法结构,并在MySQL中进行实际编写练习。也可以参考高级查询内容,...
IOC的作用:降低程序间的偶合(依赖关系) 依赖关系的管理:以后都交给spring来维护 在当前类需要用到其他类的对象时,由spring为我们提供,我们只需在配置文件中说明 依赖关系的维护:就称之为依赖注入 依赖...
通过学习Ruby的基本语法、变量和数据类型、控制流程和函数等内容,你将能够编写简单的Ruby程序并逐渐掌握更复杂的概念。继续学习和实践,你将能够开发出优雅、高效的软件,并在各个领域展现出色的能力。祝你在学习...
通过学习Rust的基本语法、变量和数据类型、控制流程和函数等内容,你将能够编写简单的Rust程序并逐渐掌握更复杂的概念。继续学习和实践,你将能够开发高效、安全的软件,并在各种应用程序领域展现出色的能力。祝你在...
通过学习Kotlin的基本语法、变量和数据类型、数学运算、控制流程和函数等内容,你将能够编写简单的Kotlin程序并逐渐掌握更复杂的概念。继续学习和实践,你将能够应用Kotlin开发各种类型的应用程序,并享受到编程的...