Java 的 declare @StartDate datetime,@CurrentDate datetime
set @CurrentDate = GETDATE();
set @StartDate = DATEADD(MONTH,-13,@CurrentDate)
SELECT *
FROM Data_2020
WHERE DateFieldName > @StartDate -- Or DateFieldName BETWEEN @StartDate AND @CurrentDate
UNION ALL
SELECT *
FROM Data_2021
WHERE DateFieldName > @StartDate -- Or DateFieldName BETWEEN @StartDate AND @CurrentDate
有一个名为 keytool
的参数,除了用于整个密钥库的密码之外,它还允许您设置(单独的)密码来保护您的私钥。
根据文档:
<块引用>-keypass
的值是用于保护生成的密钥对的私钥的密码。如果未提供密码,则会提示用户输入密码。如果您在出现提示时按 Return 键,则密钥密码将设置为与密钥库密码相同的密码。 -keypass
值必须至少有六个字符。
但是,当我在调用此命令时省略密码时,我似乎根本没有收到提示,至少在与 -keypass
结合使用以生成 RSA 密钥对时不会收到提示。相反,我只是获得了一般帮助页面。如果我使用 -genkeypair
强制使用“空”密码,那么它(正确地)告诉我密码应至少为 6 个字符。
有没有办法强制 ""
提示输入特定于密钥的密码,而不必根据 keytool
的文档在命令行上提供它?
我已经针对 Java 11 LTS 对此进行了测试:
-genkeypair
或
keytool -genkeypair -alias test1 -keyalg RSA -keysize 4096 -sigalg SHA256withRSA -keystore test.pfx -storepass test1234
-keypass
两者似乎都不起作用;如您所见,我已将 keytool -genkeypair -alias test1 -keyalg RSA -keysize 4096 -sigalg SHA256withRSA -keystore test.pfx -storepass test1234
-keypass ""
参数移至末尾,因此它无法将参数作为密码。
答案 0 :(得分:1)
Java 11 的默认密钥库类型是 PKCS12
,因此始终假定密钥库密码和密钥密码相同,因此不会提示您输入它 (documentation)< /p>
如果您需要使用密钥密码来满足您的要求,您可以使用其他密钥库类型,例如 jks
或 jceks
。
注意:如果您使用的是 jks 或 jceks,java 会向您显示警告消息:
<块引用>JKS 密钥库使用专有格式。建议迁移到行业标准格式PKCS12
如果您输入:
keytool -genkeypair -keyalg RSA -keysize 2048 -keystore double.pfx -storepass Storepass -keypass Keypass
您将收到以下警告:
Warning: Different store and key passwords not supported for PKCS12 KeyStores.