我们试图在Java7中实现支持AES/GCM/NOPADDING的加密,以获得以下异常。
找不到任何支持AES/GCM/NOPADDING的提供程序
下面是生成密码实例的代码示例。
SecretKeySpec eks = new SecretKeySpec(k, "AES");
Cipher c = Cipher.getInstance("AES/GCM/NoPadding");
c.init(Cipher.ENCRYPT_MODE, eks, new GCMParameterSpec(128, iv));
Java 7 SE不支持此密码(Solaris例外)。
public static void main(String[] args) throws Exception {
for (Provider provider : Security.getProviders()) {
for (Map.Entry<Object, Object> entry : provider.entrySet()) {
if (((String) entry.getValue()).contains("GCM")) {
System.out.printf("key: [%s] value: [%s]%n",
entry.getKey(),
entry.getValue());
}
}
}
}
在这种情况下,您可能会看到Bouncy Castle作为服务提供商。
用于使用BouncyCastle的小片段。
Security.addProvider(new BouncyCastleProvider());
Cipher c = Cipher.getInstance("AES/GCM/NOPADDING", "BC");
Java8支持开箱即用的密码
Cipher c = Cipher.getInstance("AES/GCM/NOPADDING");
问题内容: 我试图使用AES算法加密数据。但是,发生以下例外。 有人知道解决此问题的方法吗?我的JDK版本是1.7。 问题答案: 您不想为分组密码使用指定PKCS#7填充。您要指定PKCS#5填充。PKCS#5指定用于分组密码,而PKCS#7未指定(用于S / MIME等不同地方)。我将指出PKCS#5和PKCS#7实际上指定了完全相同的填充类型(它们是相同的!),但是在此上下文中使用时称为#5。
问题内容: 我在Java 8中使用加密,并且想知道我的代码是否存在安全漏洞。我的代码似乎可以 工作 ,因为它可以加密和解密文本,但是一些细节尚不清楚。 我的主要问题是: 该IV是否满足“对于给定的密钥,IV不得重复”的要求。 来自RFC 4106 ? 我也很感激我对相关问题的任何答案/见解(见下文),但第一个问题困扰我最多。我不知道在哪里可以找到答案的源代码或文档。 这是完整的代码,大致。如果写这
我得到了一个错误: 不支持的密码算法(AES-256-GCM)(运行时错误) 但我似乎有所有的要求: $openssl enc-help 2>&1 grep gcm -AES-128-ECB-AES-128-GCM-AES-128-OFB -AES-192-ECB-AES-192-GCM-AES-192-OFB -AES-256-ECB-AES-256-GCM-AES-256-OFB Ruby解释
该IV是否满足“对于给定的密钥,IV不得重复”的要求。来自RFC 4106? 我也非常感谢对我相关问题的任何回答/洞察力(见下文),但第一个问题是最困扰我的。我不知道在哪里可以找到源代码或文档来回答这个问题。 下面是大致的完整代码。如果我在写这篇文章时引入了错误,我深表歉意: > 用cipher.getiv()返回的IV对我来说以这种方式使用安全吗? 它是否避免了在伽罗瓦/计数器模式下重复使用IV
我正在尝试使用JPA和EclipseLink来持久化元素。所以我创建了一个类来持久化 等等。我创建了一个类来“使用”: 然后,我有以下persistence.xml: 但是,即使我改变了属性,我也有同样的错误: 线程"main"中的异常javax.persistence.PeristenceException:没有名为MyPU的EntityManager的持久性提供程序(当调用工厂=Persist