我想爲用戶提供一個通過對稱密碼加密一些數據到文件的服務。用戶只需提供密鑰,並且他/她可以爲密碼提供初始化矢量。如何分發init。數據通過對稱密碼加密的矢量?
有沒有標準的文件應該是什麼樣子?使用加密數據填充文件並在對話窗口中顯示相應的初始化向量是有意義的。對其他人來說,初始化向量應該與加密數據一起存儲在文件中似乎是合理的。
對我來說重要的是結果對用戶很有用,他/她也不需要費心調整結果。
感謝您的評論!
我想爲用戶提供一個通過對稱密碼加密一些數據到文件的服務。用戶只需提供密鑰,並且他/她可以爲密碼提供初始化矢量。如何分發init。數據通過對稱密碼加密的矢量?
有沒有標準的文件應該是什麼樣子?使用加密數據填充文件並在對話窗口中顯示相應的初始化向量是有意義的。對其他人來說,初始化向量應該與加密數據一起存儲在文件中似乎是合理的。
對我來說重要的是結果對用戶很有用,他/她也不需要費心調整結果。
感謝您的評論!
通常的做法是將IV作爲密文文件的第一個塊。這樣,接收器只將前8個字節(DES)或16個字節(AES)視爲IV,其餘文件視爲實際的密文。
使用與用於密文相同的IV格式:Base64,十六進制,字節數據或其他。
如果你的文件中的加密數據一起存儲IV你應該罰款...
原則上,你可以使用任何你想要的格式,只要程序的解密部知道如何閱讀它。爲了提高效率,在數據之前使用初始化向量似乎是一個好主意。
如果你想加密文件,一個好主意不是創建你自己的格式(這導致你不得不做這樣的決定),而是使用現有的文件格式(這也是一個加密協議)。
我推薦OpenPGP message format, as defined in RFC 4880(或其中的一些子集,如果你不需要所有的功能)。這也有一個好處,即如果你的程序以某種方式停止工作(當然,只有當他們有密鑰/密碼時),你的客戶才能使用任何OpenPGP實現(如pgp或gpg)來解密你的文件。
但是如何?第一行IV和其餘的應該是二進制數據? –
@MartyIX ...根據你在那裏存儲的內容,你可能想要寫一些頭文件,包含關於文件佈局的信息......或者你可以將一切(iv,數據)全部逐字節地轉儲到文件中。 ..或者你可以使用XML ...無盡的可能性... – DarkSquirrel42
是的,我知道。我只是想知道是否有一個常用的標準。因爲如果有的話,我的服務對我的自定義輸出實現來說是無用的。用戶將無法在他/她的另一個程序中使用它。 –