md5函数的学习程序

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

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

代码如下:

[code]// 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));
}
}
[/code]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值