我想在創建文件時加密文件,並在使用AES算法進行讀取操作時解密文件。我也分別在vfs_write()
和vfs_read()
中分別編寫了代碼,用於加密和解密,並且它運行得很好,但現在唯一的問題是k每當我傳遞一個文件到vfs_write()
時,其長度不是16的倍數(AES BLOCK SIZE)填充它使它成爲16的倍數,而bcz這個文件的大小增加,但write()
函數不知道這個,所以它拒絕在Linux內核中使用AES進行加密和解密
例如: - 假設我輸入數據爲「123」,這裏的length
是4(數據長度爲3 + 1'\ 0'字符),所以AES填充12個字節使其爲16個字節(因爲AES在16個字節塊上工作),但write()
只需要4的原始長度,所以我想知道如何將文件大小更改爲16(在這種情況下)以及在內核中的位置代碼。
我想這
inode->i_size=new_length;
inode->i_op->truncate(inode);
還我試圖
if(file->f_flags & O_APPEND)
*pos=i_size_read(inode);
,但是這是行不通的BCZ內核掛起,也我不理解在哪裏做這樣的事情,即,在功能和如何。
此外,我試圖改變計數變量與vfs_write()
新的長度,但隨後它給錯誤爲「貓寫錯誤:沒有空間留在設備上」。
它工作正常時,我通過文件這是16.
他們爲你用黑體字寫的每個單詞付出幾美分嗎? :S(順便提一句,有趣的問題) – 2012-02-20 15:19:38