Хранение хэш-значений из SHA256
Я использую этот код и не могу сохранить вывод хэш-функции в массив char
. Можете ли вы мне помочь, как это сделать?
#include "sha256.h"
#include <Arduino.h>
#include "./printf.h"
void printHash(uint8_t* hash) {
int i;
for (i=0; i<32; i++) {
Serial.print("0123456789abcdef"[hash[i]>>4]);
Serial.print("0123456789abcdef"[hash[i]&0xf]);
}
Serial.println();
}
void setup()
{ String FinalStr="1234567890";
Sha256.init();
Sha256.print(FinalStr);
printHash(Sha256.result());
}
void loop()
{
}
@Amr Ahmed, 👍0
Обсуждение2 ответа
▲ 0
Сохранить в вектор символов (64 символа + NULL):
void copyHash(char* buf, uint8_t* hash) {
int i, j = 0;
for (i = 0; i < 32; i++) {
buf[j++] = "0123456789abcdef"[hash[i]>>4];
buf[j++] = "0123456789abcdef"[hash[i]&0xf];
}
buf[j] = 0;
}
void setup()
{
String FinalStr="1234567890";
Sha256.init();
Sha256.print(FinalStr);
char buf[65];
copyHash(buf, Sha256.result());
}
Удачи!
,
@Mikael Patel
привет Микаэль, спасибо за твою помощь, я постараюсь рассказать тебе о результатах, очень признателен, @Amr Ahmed
Я попробовал и получил разные результаты "c775e7b757ede630cd0aa1113bd102661ab38829ca52a6422ab782862f268646 2f64612d9642afc666117f4d4fc87c17dba06ad091e1ce611f70020f2278337e", @Amr Ahmed
▲ 1
Вот код, который мне помог:
#include "sha256.h"
void setup(void)
{char encoded[64];
Serial.begin(9600);
// на самом деле это тест RFC4231 4.3
Sha256.init();
Sha256.print("123");
uint8_t * result = Sha256.result();
Serial.println("Expect: 2d711642b726b04401627ca9fbac32f5c8530fb1903cc4db02258717921a4881");
Serial.print( "Got : ");
for (int i = 0; i < 32; i++) {
Serial.print("0123456789abcdef"[result[i] >> 4]);
Serial.print("0123456789abcdef"[result[i] & 0xf]);
for(int i = 0; i < 64; i+=2)
{
encoded[i] = "0123456789abcdef"[result[i / 2] >> 4];
encoded[i + 1] = "0123456789abcdef"[result[i / 2] & 0xf];
}
}
Serial.print("\n");
for(int z = 0; z < 64; z++)
Serial.print(encoded[z]);
}
void loop(void)
{}
,
@Amr Ahmed
это код, который сработал у меня, @Amr Ahmed
Смотрите также:
- Как использовать SPI на Arduino?
- Как решить проблему «avrdude: stk500_recv(): programmer is not responding»?
- Как создать несколько запущенных потоков?
- Как подключиться к Arduino с помощью WiFi?
- avrdude ser_open() can't set com-state
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Я закирпичил свой Arduino Uno? Проблемы с загрузкой скетчей на плату
вместо того, чтобы печатать его, поместите его в массив символов - вам, конечно, понадобится массив длиной 64, @Jaromanda X
привет Джароманда, спасибо за твое предложение, я не могу скопировать вывод функции printhash, @Amr Ahmed