博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
duobango-tinySAK,20121214
阅读量:5111 次
发布时间:2019-06-13

本文共 2767 字,大约阅读时间需要 9 分钟。

阅读版本:2.0

sha1(tsk_sha1.h)
接口:
tsk_sha1_errcode_t tsk_sha1compute(const char* input, tsk_size_t size, tsk_sha1string_t *result);
在此此接口实现中,使用string中hex值转为字符串的函数接口tsk_str_from_hex
结合uuid来看此接口的应用
time(tsk_time.h)
接口:
uint64_t tsk_time_now();
返回当前时间的无符号整数
UUID(tsk_uuid.h)
接口:
int tsk_uuidgenerate(tsk_uuidstring_t *result);
在此接口实现中应用上述两个接口,看下源代码:

1 /**@defgroup tsk_uuid_group niversally Unique Identifier (UUID version 5) implementation (RFC 4122). 2 */ 3  4 /**@ingroup tsk_uuid_group 5 */ 6 int tsk_uuidgenerate(tsk_uuidstring_t *result) 7 { 8     /* From wikipedia 9     *    Version 5 UUIDs use a scheme with SHA-1 hashing, otherwise it is the same idea as in version 3.10     *    RFC 4122 states that version 5 is preferred over version 3 name based UUIDs.11     *    Note that the 160 bit SHA-1 hash is truncated to 128 bits to make the length work out.12     */13     tsk_sha1string_t sha1result;14     tsk_istr_t now;15     unsigned i, k;16     static char HEX[] = "0123456789abcdef";17 18     tsk_itoa(tsk_time_now(), &now);// tsk_itoa用法19     tsk_sha1compute(now, sizeof(now), &sha1result);// tsk_sha1compute用法20 21     /* XOR the SHA-1 result with random numbers. */22     for(i=0; i<(TSK_UUID_DIGEST_SIZE*2); i+=4){23 #if 024         *((uint32_t*)&sha1result[i]) ^= rand();25 #else26         k = rand();27         sha1result[i] ^= k, sha1result[i + 1] ^= k,28         sha1result[i + 2] ^= k, sha1result[i + 3] ^= k;29 #endif30         31         for(k=0; k

 

md5(tsk_md5.h)
接口:
int tsk_md5compute(const char* input, tsk_size_t size, tsk_md5string_t *result);
eg,简单调用:
tsk_md5compute(msgs_md5[i].msg, strlen(msgs_md5[i].msg), &md5result);
base64(tsk_base64.h)
接口:
tsk_size_t tsk_base64_encode(const uint8_t* input, tsk_size_t input_size, char **output);
tsk_size_t tsk_base64_decode(const uint8_t* input, tsk_size_t input_size, char **output);
eg.
size = tsk_base64_encode((const uint8_t*)b64_msgs[i].ascii, strlen(b64_msgs[i].ascii), &output_e);
HMAC(tsk_hmac.h)
HMAC是密钥相关的哈希运算消息认证码(Hash-based Message Authentication Code),HMAC运算利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出。
接口:
int hmac_md5_compute(const uint8_t* input, tsk_size_t input_size, const char* key, tsk_size_t key_size, tsk_md5string_t *result);
int hmac_md5digest_compute(const uint8_t* input, tsk_size_t input_size, const char* key, tsk_size_t key_size, tsk_md5digest_t result);
int hmac_sha1_compute(const uint8_t* input, tsk_size_t input_size, const char* key, tsk_size_t key_size, tsk_sha1string_t *result);
int hmac_sha1digest_compute(const uint8_t* input, tsk_size_t input_size, const char* key, tsk_size_t key_size, tsk_sha1digest_t result);
【备注】tinySAK部分的代码就阅读到此,其他源码后续应用中阅读
比如,线程,timer,互斥锁等,可以在实际中应用,也可以依据平台使用该平台下提供的对象...
努力学习...

转载于:https://www.cnblogs.com/GoGoagg/archive/2012/12/14/2817652.html

你可能感兴趣的文章
查询数据(后台到前台传递数据,显示数据)
查看>>
集群tomcat+apache配置文档
查看>>
前端制作民族下拉列表
查看>>
nginx虚拟目录
查看>>
【Spring】15、spring mvc路径匹配原则
查看>>
VMware Tools安装
查看>>
vuejs基础入门之环境搭建
查看>>
5.14数据结构-串的输入,对比,复制,匹配
查看>>
【Oh】论宇宙是怎么来的
查看>>
SQL SERVER-开启xp_cmdshell
查看>>
Home Web Server 1.9.1 build 164 - CGI Remote Code Execution复现
查看>>
编写一个文件分割工具,能把一个大文件分割成多个小的文件。并且能再次把它们合并起来得到完整的文件。...
查看>>
特效插件
查看>>
2019.04.09 电商20 购物车的展示
查看>>
Linux上架设boost的安装及配置过程
查看>>
Coding Contest(费用流变形题,double)
查看>>
【jQuery】将某对象节点转化为HTML代码
查看>>
14. HTML 列表(无序, 有序, 定义)
查看>>
oracle 表空间不足解决办法
查看>>
elementui 多组件表单验证
查看>>