質問: c言語を用いたプログラムで、
回答: 前回の回答者です. 紹介した手前,私も試してみましたが DEC.c内のsbox()はほとんど書き変えずに正しい値が出てきます. DES.cについては以下を書き変えました. ・sbox()のconst を消す ・#include "DES.h"を消す ・#include を追加 ・#include を追加 ・typedef u_char uchar; を追加 ・typedef size_t uint8_t; を追加 あとはテストとして以下を使い, #include #include extern void sbox ( u_char *, u_char *); int main() { int i; u_char src[8]; u_char dst[4]; src[0] = 0x12; src[1] = 0x34; src[2] = 0x56; src[3] = 0x78; src[4] = 0x9a; src[5] = 0xbc; sbox( dst, src ); for( i=0 ; i<6 ; i++ ) { printf("%02x", src[i] ); } printf("\n"); for( i=0 ; i<4 ; i++ ) { printf("%02x", dst[i] ); } printf("\n"); } 結果は以下の通り. 123456789abc <- 入力 d8259735 <- 出力 この結果は私が以前作っていたハードウェアDESの結果と一致しています.