Hallo Allemaal,
Ik moet voor een project een configuratie bestand voor een client over internet versturen. Het configuratiebestand is plain tekst en bevat wachtwoorden voor onder andere SIP accounts. Het leek mij verstandig dit eerst te encrypten voordat het verstuurd wordt. Nu heb ik zelf een simpele encryptie en decryptie functie geschreven zowel voor Java als voor PHP dezelfde functies. Ik vraag me alleen af hoe veilig is, in principe is het in de basis een XOR encryptie met een nooit repeterende sleutel.
Hier volgt de code om voor de encrypt in java:
Kan er iemand inschatten hoe veilig dit is en hoe lang het zou duren om deze encryptie te kraken?
Zijn er eenvoudige aanpassingen te doen waardoor dat de encryptie veiliger word (zonder het veel complexer te maken)?
Misschien leuk voor iemand die zin heeft in een uitdaging ;-), hier is een stuk encrypted data gemaakt met bovenstaande code, als je het kan kraken laat het dan ook graag weten:
Bij voorbaat bedankt voor jullie hulp.
Ik moet voor een project een configuratie bestand voor een client over internet versturen. Het configuratiebestand is plain tekst en bevat wachtwoorden voor onder andere SIP accounts. Het leek mij verstandig dit eerst te encrypten voordat het verstuurd wordt. Nu heb ik zelf een simpele encryptie en decryptie functie geschreven zowel voor Java als voor PHP dezelfde functies. Ik vraag me alleen af hoe veilig is, in principe is het in de basis een XOR encryptie met een nooit repeterende sleutel.
Hier volgt de code om voor de encrypt in java:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| /** Encrypts the given value with the given password.
* @param pass The password that will be used to encrypt the data.
* @param value The value that will be encrypted.
* @return The encrypted data string that results from the encryption with the given password.
*/
public static String encryptString(String pass, String data)
{
String key = calcMD5(pass);
String encryptedData = "";
for( int i = 0 ; i < data.length() ; )
{
key = calcMD5(key + i);
for( int n = 0 ; n < key.length() ; n++ )
{
if( i >= data.length() ) break;
char v = data.charAt(i);
char k = key.charAt(n);
encryptedData += (char)(v ^ k);
i++;
}
}
String encodedData = Base64.encodeString(encryptedData);
return encodedData;
} |
Kan er iemand inschatten hoe veilig dit is en hoe lang het zou duren om deze encryptie te kraken?
Zijn er eenvoudige aanpassingen te doen waardoor dat de encryptie veiliger word (zonder het veel complexer te maken)?
Misschien leuk voor iemand die zin heeft in een uitdaging ;-), hier is een stuk encrypted data gemaakt met bovenstaande code, als je het kan kraken laat het dan ook graag weten:
code:
1
| bVgNFRhcRxlRFhcDFkAWEUsOXg9bBEIWVhlHAUIXRhYMV0ZWBBJXRUdTAEQQXxIbGF1SRhJYABIEDVtCHEIQCgkNFARYX11CWkIJWEAZRg9URUtXE0JWF1RDU0UGRBgHVF1XRBcJGUoEB0VHDFsWEE1dT0ITRlsGVxJXQlxSWFUYCBJERwsVUVVCcwpVX0QGG1YIEFBXAURaAUQYWQYTU1laFhcNVkEZSFsRFVNfBxFQF0FCW1FVSgMa |
Bij voorbaat bedankt voor jullie hulp.
[ Voor 11% gewijzigd door TygeR op 27-03-2011 10:49 ]