AES 復号化の Java 実装を Golang に移植しようとしています。Golang を使用して、JAVA コードで以前に暗号化されたデータを復号化する必要があります。しかし、これまでのところ、解読する運がありません。
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);
}
Cryptography 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)
エラーはスローされず、文字列が返されます。しかし、この文字列は暗号化されたデータの近くにはありません。どんな助けでも大歓迎です!ありがとう!