Glib学习(25) 数据校验和 Data Checksums

glib源码下载:http://ftp.gnome.org/pub/gnome/sources/glib/
glib帮助文档:https://developer.gnome.org/glib/

Includes
#include <glib.h>
#include <glib/gi18n.h>

描述

GLib提供了一个通用API,用于计算任意字节序列的校验和(或“摘要”),使用各种散列算法,如MD5,SHA-1和SHA-256。

个人感觉要比openssl的函数容易使用。

例子

#include <glib.h>
#include <glib/gprintf.h>
#include <glib/gi18n.h>
#include <gmodule.h>
int main(int argc, char **argv)
{
    g_printf ("%s() in\n", __func__);
    g_printf ("MD5 length is %ld\n", g_checksum_type_get_length (G_CHECKSUM_MD5));
    g_printf ("SHA1 length is %ld\n", g_checksum_type_get_length (G_CHECKSUM_SHA1));
    g_printf ("SHA256 length is %ld\n", g_checksum_type_get_length (G_CHECKSUM_SHA256));
    g_printf ("SHA512 length is %ld\n", g_checksum_type_get_length (G_CHECKSUM_SHA512));
    g_printf ("SHA384 length is %ld\n", g_checksum_type_get_length (G_CHECKSUM_SHA384));

    const guchar *data = "buffer used to compute the checksum.";
    GChecksum *checksum = g_checksum_new (G_CHECKSUM_MD5);//创建指针
    if (checksum)
    {
        g_checksum_update (checksum, data, strlen (data));//更新数据
        g_printf ("checksum is %s\n", g_checksum_get_string (checksum));//打印md5校验
        g_checksum_free (checksum);//释放指针
    }
    gchar *checksum_str = g_compute_checksum_for_data (G_CHECKSUM_MD5, data, strlen (data));//与上面的方法相同,只是更容易使用
    g_printf ("checksum is %s\n", checksum_str);
    g_free (checksum_str);
    
    GBytes *checksum_bytes = g_bytes_new (data, strlen (data));//g_bytes数据类型
    checksum_str = g_compute_checksum_for_bytes (G_CHECKSUM_MD5, checksum_bytes);//计算md5校验
    g_printf ("checksum is %s\n", checksum_str);
    g_free (checksum_str);
    g_printf ("%s() out\n", __func__);
}

输出结果

main() in
MD5 length is 16
SHA1 length is 20
SHA256 length is 32
SHA512 length is 64
SHA384 length is 48
checksum is 550a7c1c6451be6abc7ca1ca42a09a7f
checksum is 550a7c1c6451be6abc7ca1ca42a09a7f
checksum is 550a7c1c6451be6abc7ca1ca42a09a7f
main() out

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当在ZSH shell中遇到 "zsh: command not found: glib-check" 这个错误时,通常意味着你在尝试运行的 "glib-check" 命令没有在你的系统路径中找到。glib-check 是 GLib 库(GObject Introspection)中的一个工具,它用于检查GObject元数据的完整性。 可能的原因有: 1. **缺少库或工具安装**:你需要确保GLib库及其开发工具已正确安装。在Linux上,这可能涉及到 `glib2`、`gobject-introspection` 和 `pkg-config` 包。 2. **环境变量未设置**:检查 `PATH` 环境变量是否包含了GLib工具的安装目录,如 `/usr/bin` 或 `/usr/local/bin`。 3. **命令未激活**:如果使用了像 `venv` 或 `conda` 等环境管理器,确保在正确的环境中执行该命令。 4. **错误的命令拼写**:确保输入的是 "glib-check" 而不是 "glib-check",有时因为大小写或误输入可能导致找不到。 要解决这个问题,你可以按照以下步骤操作: 1. **确认安装**:运行 `which glib-check` 来查找命令的位置,如果没有输出,说明可能未安装。 2. **安装缺失的包**:如果未安装,使用包管理器(apt, yum, dnf, brew等)安装相应的GLib和开发工具包。 3. **更新环境变量**:如果在虚拟环境中,确保在激活环境后添加正确的路径到 `PATH`。 4. **重新加载shell**:重启shell或运行 `. ~/.bashrc` 或 `. ~/.zshrc`(取决于你的shell配置)以应用新的路径设置。 如果你是程序员,记得检查你的项目的构建配置文件(如CMakeLists.txt或package.json),确保GLib相关依赖正确设置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值