public class Keys {
private static KeyPairGenerator generator;
private static KeyPair keyPair;
private static PrivateKey mPrivateKey;
private static PublicKey mPublicKey;
private static SecureRandom secureRandom;
private static final String SHA1PRNG = "SHA1PRNG";
public static final String RSA = "RSA";
private Keys() throws NoSuchAlgorithmException {
generator = KeyPairGenerator.getInstance("RSA");
}
/**
* Generate private and public key pairs
*
* @throws NoSuchAlgorithmException
*/
private static void generateKeyPair() throws NoSuchAlgorithmException {
// create SecureRandom object used to generate key pairs
secureRandom = SecureRandom.getInstance(SHA1PRNG);
// initialise generator
generator = KeyPairGenerator.getInstance(RSA);
generator.initialize(1024, secureRandom);
// generate keypair using generator
keyPair = generator.generateKeyPair();
// asssign private and public keys
setPrivateKey(keyPair.getPrivate());
setPublicKey(keyPair.getPublic());
}
/**
* Get private key from key generated
* @return
* @throws NoSuchAlgorithmException
*/
public static PrivateKey getPrivateKey() throws NoSuchAlgorithmException {
if (mPrivateKey == null) {
generateKeyPair();
}
return mPrivateKey;
}
private static void setPrivateKey(PrivateKey privateKey) {
mPrivateKey = privateKey;
}
/**
* Get public key from key pair generated
*
* @return
* @throws NoSuchAlgorithmException
*/
public PublicKey getPublicKey() throws NoSuchAlgorithmException {
if (mPublicKey == null) {
generateKeyPair();
}
return mPublicKey;
}
private static void setPublicKey(PublicKey publicKey) {
mPublicKey = publicKey;
}
这是可能的还是加密必须共享和使用相同的密钥?
主要目的就是这样。
我将有两个客户端可以发送和接收加密数据到彼此。
RSA加密只能用于加密小于密钥模数的数据。即。一个2048位的RSA公钥只能加密256字节的数据。这些数据中的一些是填充字节所需的,因此通常情况下,一个数据的空间甚至更小。
这通常是通过混合加密方案来解决的。也就是说,数据本身是用临时对称会话密钥加密的,然后会话密钥用接收者的公钥加密。加密的数据和加密的会话密钥都被发送给接收者。
您可能希望考虑像OpenPGP这样的东西,它实现了这种行为(以及更多)。BouncyCastle提供了一个用于Java OpenPGP实现。
我们使用Azure Key Vault加密和解密Blob,以保护我们的文件不受开发人员或任何不想要的访问。 我创建了如下所示的RSA密钥 现在我很少怀疑了
我对使用bouncy-gpg和PCKS12密钥的加密和描述的实现有麻烦。现在我有了PCKS12密钥(扩展名:.p12)。从这个密钥,我能够获得公钥和私钥。否则,bouncy-gpg需要使用gpg密钥。如何在bouncy-gpg中使用p12文件?如果有任何建议,我将不胜感激。多谢了。
我正在尝试将我的应用程序从128位AES密钥升级为256位AES。然而,当我将第54行从128更改为256时,我会得到以下密钥大小错误。 java.security.无效密钥异常: 非法的密钥大小 我已正确安装了JCE文件,我的应用程序生成较长的密钥这一事实证明了这一点。 我在其他文章中看到过“AES / CBC / PKCS7Padding”加密方法,但这只会让我遇到这个例外:
我正在尝试使用KMS和AWS加密SDK加密数据。查看AWS文档中提供的示例,似乎没有地方可以显式设置数据键。 使用由KMS生成的数据密钥使用AWS加密SDK加密数据的推荐方法是什么?
问题内容: 我想用Java加密和解密密码,然后以加密形式存储到数据库中。如果它是开源的,那就太好了。有什么建议/建议吗? 问题答案: 编辑 :这个答案是旧的。现在 不建议 使用MD5,因为它很容易被破坏。 我想象中的MD5必须足够好?您可以使用MessageDigest实现它。 这里还列出了其他算法。 如果确实需要,这是它的第三方版本: Fast MD5
问题内容: 我需要用openssl生成的和密钥替换从Unix到Java代码的加密和解密步骤 我生成密钥 我在Unix中使用键(我需要在Java中执行) 这是我的尝试 但它不起作用,PKCS8EncodedKeySpec / X509EncodedKeySpec不正确…但是我不知道该放什么 问题答案: 我认为您在读取PEM文件时遇到问题。JPA不直接支持PEM格式。您有两种选择,要么将它们转换为DE