2011-09-16 84 views
1

我試圖從給定鏈路實現asp.net應用程序DES加密:在asp.net中實現DES加密/解密時如何解決錯誤?

DES encrypt/decrypt

按給定的代碼其工作正常,但如果我在字節變量及其引發異常添加一個或多個字符

static byte[] bytes = ASCIIEncoding.ASCII.GetBytes("ZeroCool"); //Working fine 
static byte[] bytes = ASCIIEncoding.ASCII.GetBytes("ZeroCoola"); //throwing exception 

enter image description here

任何人有知道如何解決這一個?

DES加密有8個字符的限制嗎?

謝謝

回答

2

DES支持56位密鑰,所以你不能添加另一個。實際上56位= 7字節,所以我認爲"Zerocool"工作,因爲所有的字符都是標準的ASCII,並且只需要7位。

話雖這麼說...

  1. DES是真的老了密碼。現代家庭計算機可以輕鬆實施56位密鑰。您應該使用支持較大密鑰的密碼,如AES。

  2. 我在文章的結尾這樣說的:

使用DES,您可以加密或解密用戶的密碼,或別的東西,如果你喜歡,你可以深入到算法。

這讓我很擔心。密碼永遠不應該被加密。僅僅根據這個陳述,我會忽略整個文章是無用的。

+0

只是一個利益的問題,你對三重des的觀點是什麼? – f0x

+0

@ f0x不如AES。 – NullUserException

1

行:

static byte[] bytes = ASCIIEncoding.ASCII.GetBytes("ZeroCool");

是不是你要加密字符串的字節數組,它是加密過程中的關鍵。

它與初始化向量(IV)一起用於設置加密。

writer.Write(originalString);

是你應該尋找,如果你quering加密輸出。

+0

即鑰匙長度不應超過8個字符。我對嗎? – Sukhjeevan

+0

@Sukhi:幾乎正確。 DES採用56位密鑰加上8個奇偶校驗位(忽略)。這給出56 + 8 = 64位= 8個字節。 DES現在已經過時,除非您使用DES來兼容舊代碼,否則請使用AES。 – rossum

+0

我認爲AES是最好的選擇。感謝兄弟。 – Sukhjeevan