2009-01-19 28 views
14

Üçlü DES kullanarak şifrelenmiş bir dizeyi saklayacak bir veritabanı sütunu oluşturmam gerekiyor. Şifrelenmiş dize sütununun uzunluğunu nasıl belirlerim?Şifreli Dize'nin Uzunluğu

(Triple DES dışındaki algoritmalar için yanıtları. De açığız)

cevap

21

blok şifreler ancak bayt blokların üzerinde çalışabilir olmaz ise blok boyutu. DES ve 3DES 16 bayt bloklar 8 bayt ve AES bloğuna yapmaktadır.

Bunu işlemek için genellikle şifrelenmeden önce düz metninize geri dönüşümlü bir dolgu uygularsınız ve çoğunlukla her zaman "PKCS" -pakalama olur (PKCS5 veya PKCS7-padding olarak da bilinir)

PKCS dolgu, en az bir bayt ekler; böylece, doldurulmuş metin, blok uzunluğuna (3DES için 8 bayt) bölünebilen bir uzunluğa sahiptir. Dolgu baytlarının değeri, eklenen bayt sayısıdır. Fx. ABCDEF, ABCDEF0505050505'e eklenir ve 0011223344556677, 001122334456677080808080808080808'e doldurulur. Bunun kaldırılması kolay olduğunu unutmayın: yalnızca, baytlık baytların son baytına bakarsınız, 1 ile blok uzunluğu arasında olduğunu doğrulayın ve bu bayt sayısını kaldırın. Sonunda (kaldırılan her bir byte'ın doğru değere sahip olduğunu doğrulamak). Nihayet

, sorunuzun cevabı: CBC şifreleme ve PKCS-dolgu ile 3DES kullandığınız varsayarsak - muhtemelen vardır - n uzunluğunda bir dize şifreleme uzunluğa sahip olacaktır:

n + 8 - (n % 8) 
+0

Yani şifrelemek için 64 baytım varsa, "n" 72 olur mu? – Gabe

+0

Evet, 3DES/CBC/PKCS-dolgu kullanılarak şifrelenmiş 64 bayt şifrelemeden sonra 72 bayta olacaktır. –

1

Triple DES 168 bitlik anahtarlarını veriyor, üç 56 bit DES anahtarları kullanır. Blok boyutu 64 bit'dur.

+0

hakkında detaylı bilgi veriniz. Örneğin, 100 karakter uzunluğunda bir dizem varsa, şifreli dizenin uzunluğunu nasıl hesaplayabilirim? –

+0

(string.length/8) + 1, 8 bit karakterleri varsayarak – Keltia

+0

karakterleri karakterleri (veya tercih ederseniz bayt) varsa uzunluk/8 64 bit blok kullanıyor. – Keltia

4

Üçlü DES kullanma, dizenin uzunluğunu değiştirmez, ancak sonraki 64 bit sınırına yuvarlanır. Eğer onu "görüntülemeyi" düşünüyorsanız, kodlamayı (Base64'da olduğu gibi)

Diğer algoritmalarda olduğu gibi, çok fazla olduğu için cevap vermek zordur. birçok akış şifreler., DES, 3DES ve AES

+0

Bunu şimdi buldum: http://msdn.microsoft.com/en-us/library/system.security.cryptography.ciphermode.aspx Ek: "Metin Şifresi (CTS) modu düz metnin uzunluğunu işleyebilir. ve uzunluğu düz metin uzunluğuna uyan şifre metni üretir. " –

İlgili konular