.NET odpowiednik TripleDESCryptoServiceProvider w Javie
Proszę, nie pytaj mnie dlaczego. Mam tylko ten kod w .NET, który szyfruje / deszyfruje ciągi danych. Muszę teraz zrobić „dokładnie” taką samą funkcjonalność w Javie. Próbowałem kilku przykładów krypty DESede, ale żadna z nich nie daje takich samych wyników jak ta klasa w .net.
Mimo, że stworzyłem serwer sieciowy .net za ssl, aby obsłużyć te dwie metody zapisane w .net, to jest to zbyt głupie, by zrobić to bez wyczerpania wszystkich możliwości.
Może niektórzy z was, ludzie z Jawy, którzy są bardziej spokrewnieni w okolicy, będą mieli na głowie, jak to zrobić.
Dzięki !!!
public class Encryption
{
private static byte[] sharedkey = {...};
private static byte[] sharedvector = {...};
public static String Decrypt(String val)
{
TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
byte[] toDecrypt = Convert.FromBase64String(val);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, tdes.CreateDecryptor( sharedkey, sharedvector ), CryptoStreamMode.Write);
cs.Write(toDecrypt, 0, toDecrypt.Length);
cs.FlushFinalBlock();
return Encoding.UTF8.GetString(ms.ToArray());
}
public static String Encrypt(String val)
{
TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
byte[] toEncrypt = Encoding.UTF8.GetBytes(val);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, tdes.CreateEncryptor( sharedkey, sharedvector ), CryptoStreamMode.Write);
cs.Write(toEncrypt, 0, toEncrypt.Length);
cs.FlushFinalBlock();
return Convert.ToBase64String(ms.ToArray());
}
}
Wejście / wyjście SamleString plain = "userNameHere:passwordHere";
Console.WriteLine("plain: " + plain);
String encrypted = Encrypt(plain);
Console.WriteLine("encrypted: " + encrypted);
// "zQPZgQHpjxR+41Bc6+2Bvqo7+pQAxBBVN+0V1tRXcOc="
String decripted = Decrypt(encrypted);
Console.WriteLine("decripted: " + decripted);
// "userNameHere:passwordHere"