Мне нужно преобразовать этот код (C #) в Java:
private static string hash(string _param0, byte[] _param1)
{
byte[] bytes = Encoding.UTF8.GetBytes(_param0.ToLowerInvariant());
byte[] inputBuffer = new byte[16];
for (int index = 0; index < bytes.Length; ++index)
inputBuffer[index % 16] ^= bytes[index];
using (Aes aes = Aes.Create())
{
aes.Padding = PaddingMode.None;
aes.Mode = CipherMode.CBC;
using (ICryptoTransform encryptor = aes.CreateEncryptor(_param1, new byte[16]))
{
for (int index = 0; index < 16384; ++index)
inputBuffer = encryptor.TransformFinalBlock(inputBuffer, 0, inputBuffer.Length);
}
}
byte[] inArray = new byte[8];
Array.Copy((Array)inputBuffer, 0, (Array)inArray, 0, 4);
Array.Copy((Array)inputBuffer, 8, (Array)inArray, 4, 4);
return Convert.ToBase64String(inArray).Replace('+', '-').Replace('/', '_').Replace("=", string.Empty);
}
public static T[] encryptUntil<T>(this T[] _param0, int _param1, int _param2)
{
T[] objArray = new T[_param1];
while (--_param1 >= 0)
{
if (_param0.Length > _param2 + _param1)
objArray[_param1] = _param0[_param2 + _param1];
}
return objArray;
}
private static byte[] encrypt(string _param0)
{
byte[] bytes = Encoding.UTF8.GetBytes(_param0);
byte[] inputBuffer = new byte[16]
{
(byte) 147,
(byte) 196,
(byte) 103,
(byte) 227,
(byte) 125,
(byte) 176,
(byte) 199,
(byte) 164,
(byte) 209,
(byte) 190,
(byte) 63,
(byte) 129,
(byte) 1,
(byte) 82,
(byte) 203,
(byte) 86
};
for (int index = 0; index < 65536; ++index)
{
int num = 0;
while (num < bytes.Length)
{
using (Aes aes = Aes.Create())
{
aes.Padding = PaddingMode.None;
aes.Mode = CipherMode.CBC;
using (ICryptoTransform encryptor = aes.CreateEncryptor(bytes.encryptUntil<byte>(16, num), new byte[16]))
inputBuffer = encryptor.TransformFinalBlock(inputBuffer, 0, inputBuffer.Length);
}
num += 16;
}
}
return inputBuffer;
}
Так что в основном это использует Aes с CBC и без заполнения и шифрует строку с использованием массива байтов в качестве ключа.Я пытался использовать Cipher и "AES / CBC / NoPadding", но я не могу понять, как именно это сделать.Если бы кто-то мог помочь мне, я был бы признателен за это!