- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们可以使用 keytool 和 KeyPairGenerator 等 java.security api 做任何事情吗
我有兴趣延长具有特定有效期的证书。
例如,是否可以使用 Java 安全 API 来运行以下命令
keytool -genkeypair {-alias alias} {-keyalg keyalg} {-keysize keysize} {-sigalg sigalg} [-dname dname] [-keypass keypass] {-validity valDays} {-storetype storetype}
我只想使用 java 核心安全 API,对第三方 API 不感兴趣
最佳答案
keytool
的大多数操作(至少是我所知道的那些)都可以使用 java.security.*
类和一些附加的实用程序类来重新创建,例如,要创建一对新的 key ,您可以使用:
private static final String ALGORITHM = "RSA";
private static final String PROVIDER = "BC";
private PrivateKey privateKey;
private PublicKey publicKey;
...
public void generateNewKeyPair() {
try {
KeyPairGenerator keyGen = KeyPairGenerator.getInstance(ALGORITHM, PROVIDER);
keyGen.initialize(2048, new SecureRandom());
KeyPair keypair = keyGen.genKeyPair();
privateKey = keypair.getPrivate();
publicKey = keypair.getPublic();
} catch (Exception e) {
LOG.error("Error creating keyPair", e);
}
}
这是一个 example of retrieving来自 KeyStore
KeyPair
这是一个(更详细的)example这不仅会创建 KeyPair
,还会将其存储在文件中
您还可以将 KeyPair
连同过期时间戳序列化为 SealedObject模拟 validity
参数和 keytool
编辑: SealedObject单独不会给你 validity
参数模拟,时间戳与 key 对一起存储(在 SealedObject
中)将“模拟”到期日期(可以是被视为 key 的有效性)。例如:
class KeyWithExpiration {
private PublicKey publicKey;
private Date expirationDate;
}
public static void serializeEncrypted(File file, Serializable instance) {
// With these lines, I hope to expose some of the craft that is needed to work with the API
PBEKeySpec keySpecObj = new PBEKeySpec(PASSWORD, SALT, ITERATIONS);
Cipher ecipherObj = Cipher.getInstance(keyObj.getAlgorithm());
SecretKeyFactory secretKeyFactory = SecretKeyFactory.getInstance(ALGORITHM);
SecretKey keyObj = secretKeyFactory.generateSecret(keySpecObj);
SealedObject sealedObject = new SealedObject(instance, ecipherObj);
ObjectOutputStream objOutputStream = new ObjectOutputStream(new FileOutputStream(file));
objOutputStream.writeObject(sealedObject);
objOutputStream.close();
}
// Generate a new KeyWithExpiration
KeyWithExpiration key = new KeyWithExpiration(keyPair, DateUtil.future().days(365));
serializeEncrypted(new File(".key"), key);
这就是为什么需要 API 和一些实用类来实现 keytool
提供的一些功能
关于java - 我们可以做任何我们使用 keytool 和 java.security api 的事情吗,比如 KeyPairGenerator 等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13388087/
我正在尝试创建一个使用 RSA 来加密消息的小型消息系统,但由于某种原因,代码无法识别 KeyPairGenerator 类,所以我一开始就卡住了。到目前为止,我的代码是: public class
我的 java 代码有问题。我正在尝试加密文件。但是,当我运行我的 java 代码时,我得到“java.security.InvalidKeyException: Invalid AES key le
询问 KeyPairGenerator.initialize() 方法需要一个 SecureRandom 实例,它的初始化成本很高。 Java Doc 没有提到它是线程安全的。我能找到的就是a com
我使用 KeyPairGenerator 生成 RSA key 对,我注意到它始终生成完全匹配的 key ,而不是应有的随 secret 钥?也许有人知道为什么会这样? 我的代码现在看起来像这样: p
当测试我在 Eclipse 上使用 JUnit 创建的 Java 类时,我收到一条错误消息,告诉我:“源附件不包含文件 KeyPairGenerator.java 的源代码”。我刚刚安装了 Java
我有一个生成公钥+私钥对的客户端(安卓设备)。它将公钥发送到服务器,服务器应使用公钥加密一些数据并将其返回,以便客户端稍后可以使用私钥对其进行解密。我的 PHP 代码记录了一条警告,指出我提供的公钥无
专家, 是否可以使用Android KeyPairGenerator 类在不同设备上生成相同的 key 对?例如,通过覆盖 SecureRandom 类来生成相同的共享 key 。 非常感谢任何指导。
当我使用 keytool 生成带有 ECC 的 key 时,我得到了这个错误: Error keytool: java.security.NoSuchAlgorithmException: EC Ke
我有一些 Java 代码,当我运行函数 KeyPairGenerator.genKayPair() 时,它会运行 40 秒或更长时间。如何改变这种状况?如果我跑 openssl req -x509 -
我正在用 Java 创建一个加密安全的 IM 应用程序。第一步(建立连接后)是交换公钥(RSA-4096),以便对方可以创建对称 key (AES-256),用对方的公钥对其进行加密,通过连接发送,其
我正在尝试使用java.security获取java中RSA加密的私钥和公钥。无论我在哪里谷歌,我总是收到同样的错误,说NoSuchAlgorithException。 class secret {
我曾尝试使用 EdDSA 算法,以便使用 jar eddsa 0.3.0 生成 key 。但是,当我尝试执行 KeyPairGenerator.getInstance("Ed25519"); 时,我得
基本上,我有一个 RNG 向数据库提供随机数,我想在生成 key 对时使用这些随机数。 据我所知,到目前为止,您可以初始化提供随机源(SecureRandom 对象)的 KeyPairGenerato
这是我的程序以图像形式执行的流程。我认为这些图像是仅次于视频的最能充分描述我的问题的东西。 这里没有发生任何异常情况。控制位于 while 循环,并且 keyPair 为空。 即使 keyPairGe
我正在制作一个为用户生成 key 对的应用程序。但是在每个设备中, key 都是相同的。这是我的代码: public KeyPair generateKeys() { KeyPair keyP
我遇到了运行 Android 应用程序时观察到的异常 - 当我将下面的代码作为 JUnit 运行时,它不会发生。 java.security.NoSuchAlgorithmException: ECD
首先,我试图就安全问题提出这个问题——我得到了一些赞成票,但似乎已经一周没有答案了。我知道这是与 openssl 相关的,但是它源于使用 java KeyPairGenerator 对象,所以我觉得它
我想使用 Edwards 曲线“Curve41417”( safecurves ) 来生成 key 对。 现在我已将其转换为 Weierstrass 格式并尝试了以下源代码: public class
我们已经看到以下异常的大量涌入,并且仅适用于 Android 7.1.1 (API 25)。 7.1.1 中有什么改变导致失败吗? java.security.ProviderException: F
我正在使用 java.security.KeyPairGenerator 生成 RSA key 对,然后尝试通过 Jsch(0.1.49) 中提供的 KeyPair 类加载私钥。代码: public
我是一名优秀的程序员,十分优秀!