ファイルの作成中にファイルを暗号化し、ファイルの読み取り中にAESアルゴリズムを使用してファイルを復号したいとします。私はvfs_write()
とvfs_read()
のコードをそれぞれ暗号化と復号化のために書いていますが、うまく働いていますが、今は唯一の問題は、長さが16の倍数でないvfs_write()
(AESブロックサイズ)それを16の倍数にするためにパディングを行い、このサイズのbczがファイルのサイズを増やしますが、write()
関数はこれを知らないので拒否しますLinuxカーネルでAESを使用した暗号化と復号化
例: - "123"とデータを入力するとします。ここでlength
は4(3長のデータ+ 1 '\ 0'文字)であるため、AESは16バイトにするために12バイトをパディングしますが(AESは16バイトブロックで動作します)、write()
は4、そして私はファイルサイズを16(この場合)に変更する方法と、カーネルでファイルサイズを変更する方法を知りたいコード。
私はまた、私は
if(file->f_flags & O_APPEND)
*pos=i_size_read(inode);
を試みたが、これはbczカーネルのハングを動作していないとも私はどこつまり、このような事をする理解していないです、その機能とどのようにこの
inode->i_size=new_length;
inode->i_op->truncate(inode);
を試してみました。 でも、新しい変数の値を変更しようとしましたが、 "cat write error:デバイスにスペースが残っていません"というエラーが表示されます。
私は16
太字で書いたすべての単語に対して、あなたは何セントですか? :S(興味深い質問、ちなみに) –