C/C++ 关于 SHA256 的使用

如下图,是关于 SHA256 使用的一个经典例子

#include <openssl/sha.h>
#include <stdio.h>
#include <string.h>

int main() {
   
    char data[] = "Hello, world!"; // 要计算哈希的数据
    unsigned char hash[SHA256_DIGEST_LENGTH]; // 用于存储哈希结果的缓冲区

    SHA256_CTX sha256;
    SHA256_Init(&sha256);
    SHA256_Update(&sha256, data, strlen(data));
    SHA256_Final(hash, &sha256);

    printf("SHA-256 哈希值:");
    for(int i = 0; i < SHA256_DIGEST_LENGTH; i++) {
   
        printf("%02x", hash[i]);
    }
    printf("\n");

    return 0;
}

用来做哈希的数据除了可以是 “char [] 数组 / 字符串” 外,还可以是 int 数组,如下

#include <openssl/sha.h>
#include <stdio.h>
#include <string.h>

int main() {
   

    // char data[] = "Hello, world!"; // 要计算哈希的数据
    
    int data[] = {
   1, 2, 3, 0, 4, 5, 6, 7}; // 要计算哈希的数据
    int counter = 8;
    unsigned char hash[SHA256_DIGEST_LENGTH]; // 用于存储哈希结果的缓冲区

    SHA256_CTX sha256;
    SHA256_Init(&sha256);
    SHA256_Update(&sha256, data, counter * 4);
    SHA256_Final(hash, &sha256);

    printf("SHA-256 哈希值:");
    for(int i = 0; i < SHA256_DIGEST_LENGTH; i++) {
   
        printf("%02x", hash[i]);
    }
    printf("\n");

    return 0;

}

如果我们不增加 counter,仅仅增加 int data[] 数组的长度和内容,那么计算出的哈希值是完全一样的。

在增加 int data[] 数组的长度和内容的同时,必须也要增加 counter,才可以得到不一样的哈希值。

这个过程中,0 数值并不会破坏 SHA256 的计算

相关推荐

  1. C/C++ 关于 SHA256 使用

    2024-02-10 12:48:01       29 阅读
  2. Android Apk签名算法使用SHA256

    2024-02-10 12:48:01       19 阅读
  3. ocr+sha256

    2024-02-10 12:48:01       62 阅读
  4. SHA256计算原理

    2024-02-10 12:48:01       10 阅读
  5. bash 双hash算法sha256写法

    2024-02-10 12:48:01       36 阅读
  6. 使用.cc域名优势

    2024-02-10 12:48:01       14 阅读
  7. C++使用opensslEVP对文件进行AES-256-CBC加解密

    2024-02-10 12:48:01       38 阅读

最近更新

  1. Android 12系统源码_设备设置(一)Settings介绍

    2024-02-10 12:48:01       0 阅读
  2. 昇思25天学习打卡营第14天|静态图加速

    2024-02-10 12:48:01       0 阅读
  3. Qt项目:基于Qt实现的网络聊天室---Http服务器

    2024-02-10 12:48:01       0 阅读
  4. 自动化升级:Conda包依赖的智能更新策略

    2024-02-10 12:48:01       0 阅读
  5. 金南瓜科技SECS/GEM:引领智能制造新潮流

    2024-02-10 12:48:01       1 阅读
  6. Spring Boot+Vue项目从零入手

    2024-02-10 12:48:01       1 阅读
  7. stm32使用双通道ADC读取

    2024-02-10 12:48:01       1 阅读

热门阅读

  1. AI:124-基于深度学习的人体遮挡物体重建技术

    2024-02-10 12:48:01       35 阅读
  2. MySQL索引分类

    2024-02-10 12:48:01       30 阅读
  3. Snoop Version 2 Packet Capture File Format

    2024-02-10 12:48:01       28 阅读
  4. SQL语言复习-----1

    2024-02-10 12:48:01       25 阅读
  5. C语言数组名涵义

    2024-02-10 12:48:01       29 阅读
  6. 练习:鼠标类设计之1_类内容解析

    2024-02-10 12:48:01       32 阅读