2009-06-13 60 views
2

我有一個應用程序,它將一些信息以加密的狀態存儲在文件和數據庫中。我怎樣才能計算得到的密文長度將基於純文本輸入的長度?如何預先確定加密操作中生成的密文的長度?

加密操作包括使用.NET RijndaelManaged類/算法,然後在存儲之前轉換爲Base64字符串。

我想要做的是事先知道給定輸入的加密字符串的長度,以便我可以相應地限制輸入的長度與可用於其加密形式的存儲空間有關如果這是有道理的!)。

由於

回答

6

Rijndael算法的輸出的大小與輸入相同,向上舍入到塊大小的下一個最接近的多個(通常爲128位,又名16個字節)。 Base64將其輸入擴展爲4/3的輸出 - 它需要4個字節的輸出來表示每個3字節的輸入。因此,如果你有例如70字節的輸入,加密步驟將產生80個字節的輸出(16的最接近的倍數> 70),Base64將把它變成108(81/3乘以4)。

+0

非常好,謝謝! – 2009-06-13 16:32:17

1

加密文本將是第一個密碼塊大小比您的文本大多倍。你檢查你的算法BlockSize屬性。純粹的Base64編碼將輸出增加了三分之一,但如果您還需要URL轉義(百分比編碼)某些Base64符號(如'+'和'/'),則這可能會有所不同。

相關問題