keystore是个密钥存储库,我们经常用他来存储非对称密钥,但有时我们也需要它来存储一些对称密钥。
public void createKeyStore() {
try {
KeyGenerator keyGen = KeyGenerator.getInstance("DES");
SecureRandom random = SecureRandom.getInstance("SHA1PRNG", "SUN");
keyGen.init(56, random);
SecretKey secretKey = keyGen.generateKey();
KeyStore ks = KeyStore.getInstance("jceks");
char password[] = {'c', 'h', 'a', 'n', 'g', 'e','i','t' };
// Create an empty keystore
ks.load(null, password);
KeyStore.SecretKeyEntry skEntry = new KeyStore.SecretKeyEntry(secretKey);
ks.setEntry("myKey", skEntry, new KeyStore.PasswordProtection(password));
// store away the keystore
java.io.FileOutputStream fos =
new java.io.FileOutputStream("mystore");
ks.store(fos, password);
fos.close();
} catch (NoSuchAlgorithmException nsaex) {
nsaex.printStackTrace(System.err);
} catch (NoSuchProviderException nspex) {
nspex.printStackTrace(System.err);
} catch (KeyStoreException ksex) {
ksex.printStackTrace(System.err);
} catch (CertificateException cex) {
cex.printStackTrace(System.err);
} catch (IOException ioex) {
ioex.printStackTrace(System.err);
}
}
上面的例子是存一个DES密钥。
需要注意的就是这个keystore的类型,必须是jceks,
之前我就是使用默认的jks,导致报错。
分享到:
相关推荐
Android提供了多种加密和安全机制,其中之一就是使用KeyStore系统来存储和管理加密密钥。KeyStore是一个系统级的服务,它允许应用程序安全地存储私钥、公钥和其他认证信息。在这个场景中,我们将深入探讨如何在...
对于非对称密钥,公钥可以被分享,而私钥则需要保持私密。 6. 测试源代码分析: "Test"文件可能包含了创建、存储、加载和使用KeyStore的测试代码。这些测试可能包括: - 初始化KeyStore并加载。 - 生成不同类型...
7. **安全最佳实践**:在实际开发中,应遵循一些最佳实践,如定期更新密钥,不直接在代码中硬编码密钥,使用硬件安全模块(HSM)如果设备支持,以及在可能的情况下使用非对称密钥进行数据加密。 8. **调试与测试**:...
Java中的Blowfish对称密钥加密算法是一种广泛使用的数据加密技术,特别是在软件开发中,用于保护敏感信息的安全。Blowfish是由 Bruce Schneier 在1993年设计的一种块密码,它以其高效和安全性著称。在Java中,我们...
KeyStore允许开发者生成、存储并使用非对称密钥对(如RSA或EC)以及对称密钥,确保这些密钥不会以明文形式存在内存中。这样可以防止恶意软件窃取敏感信息,因为即使应用被反编译,密钥也是无法直接获取的。 接着,...
本文将深入探讨Java如何实现密钥分配,以及如何利用对称密钥和非对称密钥(公钥和私钥)来保障通信的安全性。 首先,我们要理解密钥分配的基本概念。在通信过程中,对称密钥用于加密和解密同一数据,效率高但不适合...
keystore是存储密钥、证书和私钥对的安全容器,常用于HTTPS通信、SSL/TLS配置以及数字签名等场景。这个过程涉及到几个关键概念: 1. 秘密键(Secret Key):秘密键是一种非对称加密算法中的私钥,用于解密由公钥...
通过这个API,开发者可以生成、导入、删除和管理各种类型的密钥,包括对称密钥、非对称密钥和证书。 2. **安全密钥生成**:在"Android保险箱"中,原始代码会详细展示如何生成强随机数,用于创建不可预测的密钥。这...
`javax.crypto.KeyGenerator` 是一个用于生成对称密钥的类。它使用特定的密钥生成参数,如密钥长度,来生成密钥对。例如,我们可以使用 `KeyGenerator.getInstance("AES")` 来生成AES(高级加密标准)的密钥。 3. ...
这里,别名是识别密钥的唯一名称,RSA是常用的非对称加密算法,keysize指定密钥长度,有效期是密钥的有效时间,keystore文件路径是保存keystore的路径。 2. **输入密码**:keytool会提示输入keystore和密钥的密码,...
根据密钥的不同类型,我们可以将其分为对称密钥和非对称密钥两种。 - **对称密钥**: 加密和解密使用同一密钥,如DES、AES算法等。优点在于速度快,但密钥分发和管理较为困难。 - **非对称密钥(也称为公钥密码系统)*...
Isis PKI 和密钥库服务提供完整的 PKI 服务,用于创建、存储和管理 RSA 私有/公共密钥和证书以及对称密钥。 Isis 可以管理多个密钥存储文件和一个保存在嵌入式 H2 数据库中的内部默认存储。 然后,可以使用Isis Java...
此外,对于大量数据,非对称加密的效率较低,通常我们会先用公钥加密一个对称密钥,然后用这个对称密钥加密大量数据,这种方式称为混合加密。 7. **证书与证书链**:在实际应用中,公钥通常会封装在一个X.509证书中...
每个Android应用都必须使用一个私钥进行签名,这个私钥通常存储在一个Keystore文件中。Keystore文件可以包含多个密钥对,每个密钥对可以用于签署不同的应用。 生成Android Keystore的步骤如下: 1. 使用`keytool`...
在Java中,`java.security.cert`包提供了证书和证书路径管理的类,如`X509Certificate`表示X.509标准的数字证书,`KeyStore`用于存储密钥和证书。 总结来说,非对称加密是保障信息安全的重要手段,尤其在传输敏感...
在Android中,我们可以使用Android Keystore System来存储和管理密钥,确保其安全性。 "AesUtil" 模块可能包含以下功能: 1. **密钥生成**:在Android设备上,可以利用Keystore API生成AES密钥,确保密钥不会被反...
同时,非对称加密效率较低,通常用于加密小量数据或加密对称密钥,而非大量数据。 这个"Java非对称加密源码实例.zip"可能包含了一些这样的示例,演示如何在Java中实现上述步骤,帮助开发者更好地理解和应用非对称...
Android提供了多种API来生成密钥,例如使用`KeyPairGenerator`类可以生成非对称密钥对。 **2. 密钥存储** 密钥存储的安全性直接影响到系统的整体安全性。Android提供了KeyStore系统来存储密钥,它可以保护密钥不被...
RSA是一种非对称加密算法,它基于两个密钥:公钥和私钥,公钥用于加密,私钥用于解密。Keytool是Java提供的一个工具,用于管理这些密钥和证书。 首先,我们要理解RSA的基本原理。RSA算法基于大数因子分解的难题,...
密钥生成算法 SM2密钥对生成算法的实现 SM4密钥生成算法的实现 加解密算法 ...SM2算法数字证书、SM2密钥对加密保护与存储功能的实现 国密SSL功能 国密SSL规范预主密钥、主密钥生成与计算功能的实现