- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我目前正在研究 Java 中的 key 处理类,特别是使用 KeyStore。我正在尝试使用 AES 实例生成一个 SecretKey,然后使用 setEntry() 方法将它放在 KeyStore 中。
我已经包含了我的代码的相关部分:
// The KS Object
private KeyStore keyStore;
private KeyStore.SecretKeyEntry secretKeyEntry;
private KeyStore.ProtectionParameter protectionParameter;
private KeyGenerator keyGenerator;
private SecretKey secretKey, newSecretKey;
keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
keyGenerator = KeyGenerator.getInstance("AES");
keyGenerator.init(256);
newSecretKey = keyGenerator.generateKey();
protectionParameter = new KeyStore.PasswordProtection(KEYSTORE_PASSWORD.toCharArray());
secretKeyEntry = new KeyStore.SecretKeyEntry(newSecretKey);
keyStore.setEntry(KEYSTORE_ALIAS, secretKeyEntry, protectionParameter);
我使用的两个常量也被定义为字符串。
我不断收到的异常是在我的 setEntry() 调用中:
java.security.KeyStoreException: Cannot store non-PrivateKeys
at sun.security.provider.JavaKeyStore.engineSetKeyEntry(Unknown Source)
at sun.security.provider.JavaKeyStore$JKS.engineSetKeyEntry(Unknown Source)
at java.security.KeyStoreSpi.engineSetEntry(Unknown Source)
at java.security.KeyStore.setEntry(Unknown Source)
我主要使用这个文档 http://docs.oracle.com/javase/7/docs/api/java/security/KeyStore.html作为引用,以及一些其他来源。
在此先感谢您的帮助。
最佳答案
我找到了 this作为 stackoverflow 上未接受的答案:
The "Cannot store non-PrivateKeys" error message usually indicates you are trying to use secret symmetric keys with a JKS keystore type. The JKS keystore type only supports asymmetric (public/private) keys. You would have to create a new keystore of type JCEKS to support secret keys.
虽然我的内存告诉我这是正确的,但很难证实这一点。
关于Java KeyStore setEntry() 使用 AES SecretKey,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18243248/
我使用以下代码将 key 转换为字节 SecretKey key = KeyGenerator.getInstance("DES").generateKey(); byte[] bkey=key.ge
我需要在 Java 中生成一个随机的 SecretKey,我将能够在未来的某个时候重新生成它。这个想法是这个 key 对于创建它的机器是唯一的并且不存储在任何地方。我正在尝试这样的事情: KeyGen
我希望能够将 DES SecretKey 保存到文件中,以便您稍后可以导入和使用它。看了好几条路线,好像都有些啰嗦,有没有简洁明了的方法呢? 最佳答案 在 Java 中将 SecretKey 保存到文
我想把String转成secretKey public void generateCode(String keyStr){ KeyGenerator kgen = KeyGenerator.getIn
我遇到了一个问题,当用户向他们的 Android 设备添加新指纹时,我想使 SecretKey 无效。我可以生成 key ,毫无问题地拉出生物识别提示。当我添加新指纹时, key 不会引发异常..它仍
我正在尝试将 key 保存在 XML 文件中,以便稍后解密加密字符串,该软件可以在“Encrypt()”方法中加密并返回我,但在尝试使用“Decrypt( )”方法 代码 private stati
我目前使用 DES 作为加密/解密数据的实践方法(我知道这不是行业惯例!)并且我在解密时遇到错误(这里是输出): java.security.InvalidKeyException: Paramete
我试图用我的公钥加密一个secretKey,然后用私钥在其他地方解密它。我可以很好地加密和解密,但是当我这样做时,我得到了一个完全不同的 key 。 这是创建公钥/私钥对的代码 public stat
我试图简单地加密一些文本,将其保存在文本文件中,然后加载/解密它。 使用Java网站上的教程,我一直使用的代码: public class MainClass { public static vo
我正在编写一个函数,使用 SecretKeyFactory 根据密码生成 key (字节)。我想在不再需要时销毁 SecretKey 实例,但它会引发异常。 try { byte[] salt
我正在尝试在应用程序中的任何地方拥有 secret (字符串),保存为!所以我想出了这个想法,使用keyStore来存储 key ,只用它来加密和解密我的 secret 。以下是我如何保存(加密)我的
在EC2上运行时,accesskey和secret key可以通过curl命令获取 curl http://169.254.169.254/latest/meta-data/iam/security-
我想问你,将 LinkedIn ConsumerKey 和 ConsumerSecret 像常量一样保存在我的代码中是否安全? 如果不安全,使用 LinkedIn 进行身份验证的正确方法是什么? 最佳
我执行以下操作来根据 KeyStore 中的用户密码存储 SecretKey: // load KeyStore static byte[] salt = // for learning purpos
作为加密和保存数据的一部分,我们使用 AES 算法和 openssl 生成了 key 。 openssl enc -aes-256-cbc -P -nosalt Openssl 已生成 KEY 和 I
我正在尝试在 C# 应用程序中复制 Java 库中的加密逻辑。 Java 包含两种方法,我已设法在 C# 中复制它们。对于任何数据集,我在每个程序中都得到相同的结果。 createKey(byte d
我最近开始在设备中看到此错误。 java.security.InvalidKeyException: Only SecretKey is supported at com.androi
我目前正在研究 Java 中的 key 处理类,特别是使用 KeyStore。我正在尝试使用 AES 实例生成一个 SecretKey,然后使用 setEntry() 方法将它放在 KeyStore
我有一个使用 S3 存储桶的 Spring Boot 应用程序。根据亚马逊(https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/ja
我目前正在 Java 中开发一个 key 处理类,特别是使用 KeyStore。我正在尝试使用 AES 实例生成 SecretKey,然后使用 setEntry() 方法将其放入 KeyStore 中
我是一名优秀的程序员,十分优秀!