在Java / Scala中解密Rails attr_encrypted

时间:2018-01-31 01:26:18

标签: java ruby-on-rails scala encryption

我看过trying to decrypt attr_encrypted stored value from Java,但它没有提供我正在寻找的帮助(除非我误解......如果有,请告诉我)。

我正在使用带有默认值的attr_encrypted,我认为这是默认值

algorithm: 'aes-256-gcm'
mode: :per_attribute_iv

我留下了存储在DB中的以下内容:

encrypted_name: "6t2JNg471ERqz4v3NOcfxI7qzxRhzzfBvwoz",
encrypted_name_iv: "dzPBH0tiYjRs1DJ9"

尝试从JVM解密这些时

val keySpec = new SecretKeySpec('MyKeyHere'.getBytes, "AES")
val spec = new GCMParameterSpec(16 * 8, "xI7qzxRhzzfBvwoz".getBytes)
val cipher = Cipher.getInstance("AES/GCM/PKCS5Padding", "SunJCE")
cipher.init(Cipher.DECRYPT_MODE, keySpec, spec)
val sansAuth = encrypted_name.dropRight(16)
cipher.doFinal((encrypted_name_iv + encrypted_name).getBytes)

我受到了

的困扰
javax.crypto.AEADBadTagException: Tag mismatch!

我只是完全错误地接近这个(我希望我......)? encrypted_name的最后16个字节应该是与GCMParameterSpec一起使用的标记是吗?

非常感谢任何帮助!

0 个答案:

没有答案