Hej alle.
Ich versuche zur Zeit VB.net in C# zu übersetzen und habe folgendes Problem:
Ich habe einen TripleDESCryptoServiceProvider und möchte gernen den Key und den IV setzen. Dafür verwende ich folgende Methode zurzeit:
Übersetzt in C# ergab das bei mir folgendes:
Nun meldet er aber bei
Danke im Voraus.
Gruß Fabian.
Ich versuche zur Zeit VB.net in C# zu übersetzen und habe folgendes Problem:
Ich habe einen TripleDESCryptoServiceProvider und möchte gernen den Key und den IV setzen. Dafür verwende ich folgende Methode zurzeit:
VB.NET-Quellcode
- Private TripleDes As New TripleDESCryptoServiceProvider
- Private Function TruncateHash(ByVal key As String, ByVal length As Integer) As Byte()
- Dim sha1 As New SHA1CryptoServiceProvider
- Dim keyBytes() As Byte = System.Text.Encoding.Unicode.GetBytes(key)
- Dim hash() As Byte = sha1.ComputeHash(keyBytes)
- ReDim Preserve hash(length - 1)
- Return hash
- End Function
- Sub New(ByVal key As String)
- TripleDes.Key = TruncateHash(key, TripleDes.KeySize \ 8)
- TripleDes.IV = TruncateHash("", TripleDes.BlockSize \ 8)
- End Sub
Übersetzt in C# ergab das bei mir folgendes:
C#-Quellcode
- DecryptData(string encryptedtext, string key) {
- System.Security.Cryptography.TripleDESCryptoServiceProvider TripleDes = new System.Security.Cryptography.TripleDESCryptoServiceProvider();
- System.Security.Cryptography.SHA1CryptoServiceProvider sha1 = new System.Security.Cryptography.SHA1CryptoServiceProvider();
- byte[] keyBytes = System.Text.Encoding.Unicode.GetBytes(key);
- byte[] hash = sha1.ComputeHash(keyBytes);
- Array.Resize(ref hash, (TripleDes.KeySize / 8) -1);
- TripleDes.Key = hash;
- System.Security.Cryptography.SHA1CryptoServiceProvider sha2 = new System.Security.Cryptography.SHA1CryptoServiceProvider();
- byte[] keyBytes2 = System.Text.Encoding.Unicode.GetBytes("");
- byte[] hash2 = sha2.ComputeHash(keyBytes2);
- Array.Resize(ref hash2, (TripleDes.BlockSize / 8) -1);
- TripleDes.IV = hash2;
- }
Nun meldet er aber bei
TripleDes.Key = hash;
"Der angegebene Schlüssel hat eine ungültige Größe für diesen Algorithmus.". Bei der VB-Version funktioniert es aber wunderbar. Kann es sein dass die Array.Resize Methode anders Funktioniert als ReDim Preserve? Wie könnte man dieses Problem umgehen?Danke im Voraus.
Gruß Fabian.