当前位置: 首页 > 知识库问答 >
问题:

默认情况下启用AES-NI内部控制?

锺离正祥
2023-03-14

Oracle对Java8的AES-NI有这样的看法:

为了使用高级加密标准(AES),增加了硬件内部信息。UseAES和UseAESIntrinsics标志可用于为Intel硬件启用基于硬件的AES intrinsics。硬件必须是2010年或更新的Westmere硬件。例如,要启用硬件AES,请使用以下标志:

-XX:+UseAES -XX:+UseAESIntrinsics

要禁用硬件AES,请使用以下标志:

-XX:-UseAES -XX:-UseAESIntrinsics

加分问题:有没有办法测试是否正在使用AES-NI?我想你可以根据性能来猜测,但这不是一种最佳的或肯定的测试方式。

对于不熟悉AES-NI本质的读者:它使用AES-NI指令集,用预编译的机器代码替换字节代码。这种情况是由JVM发生的,因此它不会出现在Java运行时或字节码的API中。

共有1个答案

百里嘉泽
2023-03-14

该标志的默认值为true,如果检测失败,它将被设置为false,因此您可以简单地使用+printflagsfinal查看是否使用:

我的笔记本电脑没有AES-NI:

C:\>"C:\Program Files\Java\jdk1.7.0_51\bin\java" -XX:+PrintFlagsFinal -version | find "UseAES"
     bool UseAES                                    = false           {product}
     bool UseAESIntrinsics                          = false           {product}
java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)

与AES-NI桌面相同:

C:\>"C:\Program Files\Java\jdk7\bin\java" -XX:+PrintFlagsFinal -version | find "AES"
     bool UseAES                                    = true            {product}
     bool UseAESIntrinsics                          = true            {product}

java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)

C:\>"C:\Program Files (x86)\Java\jre7\bin\java" -XX:+PrintFlagsFinal -version | find "AES"
     bool UseAES                                    = true            {product}
     bool UseAESIntrinsics                          = true            {product}

java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) Client VM (build 24.51-b03, mixed mode, sharing)
 类似资料:
  • 问题内容: Oracle关于AES-NI关于Java 8的说法如下: 添加了硬件内在函数以使用高级加密标准(AES)。UseAES和UseAESIntrinsics标志可用于为Intel硬件启用基于硬件的AES内在函数。硬件必须是2010或更新的Westmere硬件。例如,要启用硬件AES,请使用以下标志: 要禁用硬件AES,请使用以下标志: 但这并不表示默认情况下是否启用了AES内部函数(对于支

  • 默认情况下,我们的路由器是Yaf_Router, 而默认使用的路由协议是Yaf_Route_Static,是基于HTTP路由的, 它期望一个请求是HTTP请求并且请求对象是使用Yaf_Request_Http

  • 安装应用程序时,如何默认启用屏幕覆盖权限。 现在我面临一些问题,当捕获图像询问运行时权限时,一些设备不允许它打开屏幕覆盖设置对话框的权限。在用户看来,他们不知道为什么对话框显示以及他们做了什么。 当打开覆盖设置屏幕时,一些应用程序会自动启用屏幕覆盖权限。 下面我使用代码。 此代码直接打开覆盖设置屏幕。所有应用程序的显示列表。 我的要求是显示权限特定的应用程序或启用覆盖权限而无需用户交互。 做需要.

  • 我实现了一个在另一个堆栈溢出post上找到的方法,允许使用jQuery展开和折叠表行。该方法很简单,工作正常,但我遇到了缺省情况下扩展行的问题。我如何使这些在页面加载时显示为折叠的,以便用户可以决定展开哪些? 作为一个附带说明,有没有什么方法使折叠/展开看起来更平滑,而不是只是瞬间打开或关闭? 谢谢!

  • 问题内容: 我有一个关于乐观锁定Hibernate的问题。我试图深入了解Hibernate的乐观锁定,但是我有一个疑问。Hibernate使用版本方法(整数或时间戳)来实现乐观锁定。要进行配置,您可以使用@Version批注(或xml配置)并创建一个version属性。另一个选项是使用optimistic- lock =“ all”属性进行配置而不进行版本控制。 我的问题是,如果您没有定义任何版本

  • 问题内容: 我有一个简单的SSIS程序包,在该程序包中,我将数据从平面文件导入SQL Server表(SQL Server 005)。文件包含70k行,表没有主键。导入成功,但是当我打开SQL Server表时,行的顺序与文件的顺序不同。仔细观察后,我看到表中的数据默认情况下按第一列排序。为什么会这样呢?以及如何避免默认排序?谢谢。 问题答案: 除非您在SQL查询中指定,否则您不能依赖排序。SQL