進出口工作於Keccak(SHA-3)的實施方案,並且例如我得到這個:我的C程序打印0xE代替0x0E的在Keccak實施
Keccak( 「ABC」)= 3A985DA74FE225B2 5C172D6BD390BD855F 6E3E9D525B46BFE24511431532
相反(如:http://www.di-mgt.com.au/sha_testvectors.html)的
3A985DA74FE225B2 5C172D6BD390BD855F 6E3E9D525B46BFE24511431532
正如你可以看到我的程序錯過了一個「0x00」,我不知道我做錯了什麼。這裏
對不起球員是我的主要方法的代碼:
#include <stdio.h>
#include <stdint.h>
#include <inttypes.h>
#include <stdlib.h>
#include <string.h>
#include "round.h"
#include "keccak.h"
#define TAM_MAX_ENTRADA 4096 /*Especificacion del numero de caracteres de la entrada*/
int main(int argc, char *argv[])
{
int32_t sha3Tipo; /*Nos dice el tipo de SHA3*/
char Mensaje[TAM_MAX_ENTRADA]; /*Array de caracteres donde guardamos el mensaje de entrada*/
printf("Elige el tamaño de salida (224,256,384,512): ");
scanf("%d",&sha3Tipo);
if(argc == 1)
{
strcat(Mensaje,""); /*Si no nos han pasado argumentos significa que es un string vacio*/
}
else
{
strcpy(Mensaje,argv[1]); /*Copiamos la primera palabra en el array de caracteres*/
}
for(int32_t i = 2; i<argc; i++)
{
strcat(Mensaje," "); /*Si tenemos mas de una palabra entonces anadimos */
strcat(Mensaje,argv[i]);
}
int32_t size = strlen(Mensaje);
int32_t *psize = &size;
uint8_t *newmessage;
newmessage=keccak((uint8_t *)Mensaje, *psize, sha3Tipo);
printf("Keccak(\"%s\") = ",Mensaje);
for(int32_t i =0; i<sha3Tipo/8; i++)
{
printf("%X", *(newmessage+i));
}
printf("\n");
return 0;
}
我想你的代碼有問題。 – 2014-11-01 18:55:43
謝謝,但我期待更好的解決方案。 – 2014-11-01 18:56:46
除非您向我們展示您正在運行的代碼,否則我們無法提供任何建議。 – 2014-11-01 18:58:21