
プログラム初心者です。
写真等のファイルをバイナリデータで読み込んで暗号化の変換して出力したいと思っています。
ECBモードとかCBCモードのように
配列16バイト単位で暗号化の関数は作ったのですがどう読み込んで処理していいかわかりません。
#include <stdio.h>
#include <stdlib.h>
#include"test1.h"
int main(){
int i,j;
FILE* fp1,*fp2;
unsigned char yomikomi[16]= {0}; //16バイト読み込み用(関数用でファイルから読み込む際に
使用していた)
unsigned char key[16]= {0};
unsigned char syuturyoku[16]= {0}; //関数からの出力
unsigned char ioutput[16];
unsigned char buff[?][?]; // ファイルから読み込む16バイト分を格納する配列?
fp1 = fopen( "syasin.jpg", "rb" );
if( fp1 == NULL ){
printf( "ファイルオープンに失敗しました。\n" );
exit( 1 );
}
fread( test, sizeof(char), sizeof(test), fp1 );
}
fclose(fp1);
fp2 = fopen( "kekka", "wb" );
if( fp1 == NULL ){
printf( "ファイルオープンに失敗しました。\n" );
exit( 1 );
}
ファイルサイズ分読み込んで
for(i=0;i< ;i++){
kannsuu(yomikomi,key,syuturyoku);
}
16バイトずつ読み込んで関数に入れて値を返す
もしくは関数から出たものとまた処理を加えて繰り返す。
最後に結合してファイルに出力したいです。
その他疑問点:足りない場合はパディング?処理をしないと処理できない?
ご教授よろしくお願いします。
No.2ベストアンサー
- 回答日時:
forループを無限ループ(while(1)などでも可)にしてループ内部を以下のようにしてみては?
・fread()による16バイトデータ読み込み(※戻り値の読み込みデータ数を確認。データが無ければ終了)
・暗号化関数の呼び出し
・fwrite()による16バイトデータ書き込み
最後に読み込み、書き込みファイルのクローズ処理を。
先の回答者の指摘にあるように、16の倍数で無い場合を考慮する処理が必要でしょう。fread()の戻り値を利用して工夫しましょう。
回答ありがとうございます。
〉※戻り値の読み込みデータ数を確認。
はfreadの中で判定するということですかね?
イメージはつきました。がんばります。
No.1
- 回答日時:
メモリが足りるなら全部一度に読み込んだ方が簡単になるような気もしないでもないけど, 「16バイトごとに処理する」なら原理的には「16バイトずつ読み込めばいい」だけの話... じゃないのかなぁ. どういう処理をするのか知らんけど.
で一般には「ファイルサイズが 16 の倍数になる」とは限らないので, 16 の倍数でないときにどうするかは考えないとダメだね. あと
fread( test, sizeof(char), sizeof(test), fp1 );
の test ってなに?
回答ありがとうございます。
16バイトずつ読み込む
確かにそうですね。
読み書きについて全般的に勉強不足で本やネット見てもなかなか理解できないので質問させていただきました。
いろんなプログラムを組み合わせてあれこれしています。
testは関数を16バイトで読み込んでいた配列でした。ここでyomikomiの部分です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- C言語・C++・C# const char** p;のとき、free(p)でC4090エラーとなるのはなぜですか 3 2023/03/31 16:28
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
- C言語・C++・C# 100バイトのバイナリファイルを読み込んで別のファイルに書き込みたいのですが、型をどうすればいいのか 1 2022/11/03 17:11
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バイナリファイルをテキストフ...
-
freadでファイルを読み込んだ際...
-
テキストファイルの行数を取得...
-
fgetsで2行目から文字化け
-
VB.NETによるプロセス間通信
-
JAVAでつくったプログラムはコ...
-
C言語初心者の質問失礼します。
-
どんなプログラムを書いても指...
-
関数の呼び方について
-
gdbデバッガって?
-
2つのCSVファイルの比較
-
Access クエリ実行が急に非常に...
-
関数の容量を知るには?
-
CファイルとCPPファイルのDLL作成
-
ファイルをダウンロードして展...
-
ストリームについて
-
Winでコマンドプロンプトを出さ...
-
GIFファイルを一括してWORDに挿...
-
スタートメニューの「ファイル...
-
デスクトップにショートカット...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストファイルの行数を取得...
-
ファイル内のデータを1行削除...
-
バイナリファイルをテキストフ...
-
fgetsで2行目から文字化け
-
c言語 2つのファイルを行ご...
-
ファイル読み込みについて
-
巨大なテキストファイル(可変...
-
改行までの一文字ずつのファイ...
-
0x00をファイル出力
-
複数テキストファイルを読み込...
-
EOF判定されない
-
【VB.Net】バイト型配列に読み...
-
変数内の文字列を空にできない
-
[動的配列]C言語の勉強で簡単な...
-
続・EOF判定されない
-
0バイトファイルの作成
-
ファイルサイズ指定し、ファイ...
-
winsock recvでの文字化け
-
int型の値をファイルに保存
-
UNIXシェルプログラム等からバ...
おすすめ情報