Я пытаюсь перенести Java-реализацию расшифровки AES на Golang.Мне нужно расшифровать данные, которые ранее были зашифрованы с помощью кода JAVA с помощью Golang.Но пока мне не повезло, расшифровывая его.
Код Java:
private static byte[] pad(final String password) {
String key;
for (key = password; key.length() < 16; key = String.valueOf(key) + key) {}
return key.substring(0, 16).getBytes();
}
public static String encrypt(String password, String message) throws Exception
{
SecretKeySpec skeySpec = new SecretKeySpec(pad(password), "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(1, skeySpec);
byte[] encrypted = cipher.doFinal(message.getBytes());
return Hex.encodeHexString(encrypted);
}
public static String decrypt(String password, String message)
throws Exception {
SecretKeySpec skeySpec = new SecretKeySpec(pad(password), "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(1, skeySpec);
cipher.init(2, skeySpec);
byte[] original = cipher.doFinal(Hex.decodeHex(message.toCharArray()));
return new String(original);
}
Я пробовал реализации, такие как Криптография GIST или
func decrypt(passphrase, data []byte) []byte {
cipher, err := aes.NewCipher([]byte(passphrase))
if err != nil {
panic(err)
}
decrypted := make([]byte, len(data))
size := 16
for bs, be := 0, size; bs < len(data); bs, be = bs+size, be+size {
cipher.Decrypt(decrypted[bs:be], data[bs:be])
}
return decrypted
}
hx, _ := hex.DecodeString(hexString)
res := decrypt([]byte(password), hx)
Ошибка не выдается, и возвращается строка.Но эта строка не находится близко к зашифрованным данным.Любая помощь очень ценится!Спасибо!