BouncyCastle:GCM中的mac检查失败

时间:2014-12-22 20:50:03

标签: java jpa bouncycastle

我在应用程序中定义了以下类:

@Entity
@Table(name = "SETTINGS")
public class Settings {

    @Id
    public int id;

    private String sharedSecret;

    @Transient
    private SecretKey key;

    public SecretKey getKey() {
         return key;
    }

    public void genKey() throws NoSuchAlgorithmException {
        key = KeyGenerator.getInstance("AES").generateKey();
        sharedSecret = Base64.toBase64String(key.getEncoded());
    }

    @PostLoad
    private void init() {
        byte[] encodedKey = Base64.decode(sharedSecret);
        key = new SecretKeySpec(encodedKey,0,encodedKey.length,"AES");
    }
}

我正在使用javax.security和BouncyCastle包。我们的想法是使用JPA,应用程序将Base64编码的字符串保存到应用程序的数据库中,然后在需要时使用该持久值来重新创建密钥。但是,当我执行解密时,我遇到了一个错误,即

  

com.nimbusds.jose.JOSEException:无法验证GCM身份验证   tag:mac检查GCM失败

我所做的研究似乎表明从数据库读取的密钥不是相同的持久值,但我不确定我还能做些什么来正确编码和解码密钥。

1 个答案:

答案 0 :(得分:0)

这个问题与课程无关,而是与密文的阅读方式有关。