import std.stdio;
import std.base64;
void main()
{
char[] a;
char[] b;
char[] c;
// 方法1
a = "%%%abdsfds%";
a = "张33";
writefln("a string (%d):\t%s", a.length, a);
b = encode(a);
writefln("b string (%d):\t%s", b.length, b);
c = decode(b);
writefln("c string (%d):\t%s", c.length, c);
assert(c == a);
writefln();
// 方法2
char[] d;
char[] e = new char[100];
char[] f = new char[100];
e[] = 0;
f[] = 0;
d = "%%%ABCCCC%AFDSFDS%";
d = "CCCCAAFDSFDSAAAAAA";
d = "张33";
writefln("d string (%d):\t%s", d.length, d);
encode(d, e);
e.length = encodeLength(d.length);
writefln("e string (%d):\t%s", e.length, e);
decode(e, f);
f.length = decodeLength(e.length);
writefln("f string (%d):\t%s", f.length, f);
assert(d == f);
}
有两点不清楚:
1,最后的assert不正确。不清楚为什么,请教高手。
2,方法2的写法正确吗?数组的定义和初始化还不是十分清楚。
是不是e[] = 0;是多余的。
char[e] = new char[100]; 语句是不是就是分配100个字节空间?
这种写法会不会更好一些。
char[] e;
e.length = encodeLength(d.length);
2007年8月7日:
去把base64里面的函数调试了一下。发现encodeLength / decodeLength根本不是编码解码后的字符串长度,只是一个最大长度。传入的字符串应该大于等于这个长度,函数才继续执行而已。
传入的buffer长度和返回值的长度之间的关系(base64里面的unittestl例子):
引用
buffer: 3
return: f, 1
buffer: 3
return: fo, 2
buffer: 3
return: foo, 3
buffer: 6
return: foos, 4
buffer: 33
return: all your base64 are belong to foo, 33
buffer: 18
return: testing some more, 17
buffer: 9
return: asdf jkl;, 9
buffer: 12
return: base64 stuff, 12
buffer: 18
return: foo!, 18
分享到:
相关推荐
取得Base64 一个节点程序包,用于以base64编码获取本地或远程文件。 用于将资产(图像,Web字体等)内联到HTML或CSS文档中。 免责声明:到目前为止,我仅将其用于图像,但没有理由为什么它不适用于任何其他类型的...
MD5Class: 完整的MD5码生成类和Base64编码解码函数. Tmqlgn.cfg: 保存QQ登录命令行(经过加密处理) 声明: 程序中的MD5算法和BASE64编码算法均来自互联网,经适当的改编封装而成,未经原作者许可, 请勿用于商业目的. ...
抽象出一个基类Base,在其中说明一个虚函数,用来求面积,并利用但界面和多定义版本设计求各个图形面积的方法。 了解虚函数对多态性的支持。 掌握虚函数和纯虚函数的概念。 理解静态多态性和动态多态性,学习使用虚...
3.加密编码算法 包括base64变表编码和简单异或加密解密案例并带有加解密源码 4.动态调试 包括动态调试解密案例 5.脱壳处理 包括解压壳脱壳解密案例 6.附带4个解密案例程序,包括三个exe文件和一个linux程序的逆向...
本书采用理论与实践相结合的方式,提供了457 个案例,涉及多个行业,读者可以根据书中的案例举一反三,将其直接应用到实际工作中,有效提高学习效果与实际应用能力。 本书既可以作为函数速查工具手册,又可以作为...
通过本书的学习,读者可以逐步掌握C#程序设计。 本书难度适中,实例丰富,可操作性强,可作为高等学校计算机相关专业的教材或参考用书,也可供广大程序员参考。 目录 第1章.NET平台与Visual Studio开发工具 1.1...
主要的区别在于C语言链接库函数的机械码连结到您的程序代码中,而Windows函数的程序代码在您程序执行文件外的DLL中。 当您执行Windows程序时,它通过一个称作「动态链接」的过程与Windows相接。一个Windows的.EXE...
英特尔对oneAPI的实现包括很多其他库、编译器和分析器,它被安排在特定的应用程序领域的工具套件中,可以通过多种方式下载或者在英特尔DevCloud上远程使用。在英特尔oneAPI里可以找到入门所需要的一切,里面涵盖了...
包括服务器端所有组件(内核除外,现在市面上还没有6.6内核),共享组件(公共服务,界面控件,界面资源),以及全部数据库文件和脚本文件,6.6较6.5有较大改动,是学习研究的上等程序代码。 结合本人上次发布的...
《PHP程序开发范例宝典》内容充实,实例丰富,特别适于PHP编程人员和广大计算机爱好者学习开发使用,也可供大、中专院校师生阅读 参考。 《PHP程序开发范例宝典》附有配套光盘。光盘提供了书中所有实例的源...
比如Huffman、LZSS、LZW、RLE、Aritmatic、LBE、Base64等等.... qcryptoCLS.ZIP: VB MD5安全模块示例 SECUREencryptionalgorithms.zip: 这个加解密源码几乎包括了世界上几个最著名的加密算法:Blowfish、...
英特尔对oneAPI的实现包括很多其他库、编译器和分析器,它被安排在特定的应用程序领域的工具套件中,可以通过多种方式下载或者在英特尔DevCloud上远程使用。在英特尔oneAPI里可以找到入门所需要的一切,里面涵盖了...
base64 struct hashlib hmac itertools contextlib urllib XML HTMLParser 常用第三方模块 Pillow requests chardet psutil virtualenv 图形界面 网络编程 TCP/IP简介 TCP编程 UDP编程 电子邮件 SMTP发送邮件 POP3...
一、Qt Creator 的安装和hello world 程序的编写(原创) 1.首先到Qt 的官方网站上下载Qt Creator,这里我们下载windows 版的。 下载地址:http://qt.nokia.com/downloads 如下图我们下载:Download Qt SDK for ...
return base64.b64encode(data.tostring()).decode('utf8') def getResult(imagePath): data = json.dumps({'images': [cv2_to_base64(cv2.imread(imagePath))]}) r = requests.post(...
用 Python 编写的所有模拟和算法的库。包括从太阳系和重力模拟到排序算法可视化器的程序。所有算法和模拟都是由 Fraser ...ASCII 到 Base64 编码器和解码器 MD5 哈希生成器 霍夫曼编码压缩和解压缩 根的多项式构造函数
本次实验旨在主要对前期学习的有关C++面向对象部分的多态性知识进行实践操作,并综合前期的全部有关面向对象的内容,完成项目。 在理论方面主要体现了: 1.面向对象的抽象思维分析; 2.对继承关系的分析和实践应用; 3....
编写程序定义一个基类BaseClass,构造其派生类DerivedClass,在构造函数和析构函数中用cout输出提示信息,观察构造函数和析构函数的执行情况。程序名:lab7_2.cpp。 3.用debug功能跟踪程序lab7_2的执行过程,观察...
LPSTACKFRAME64 StackFrame, PVOID ContextRecord, PREAD_PROCESS_MEMORY_ROUTINE64 ReadMemoryRoutine, PFUNCTION_TABLE_ACCESS_ROUTINE64 FunctionTableAccessRoutine, PGET_MODULE_BASE_ROUTINE64 ...