java使⽤密钥加密_java使⽤密钥对加密和解密?有谁知道如何使⽤RSA公钥和私钥加密和解密字符串对象?
我使⽤KeyPair⽣成器在下⾯创建了私钥和公钥,但我现在想要使⽤公钥来加密数据,并使⽤私钥来解密它.
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 = Instance("RSA");
}
/**
* Generate private and public key pairs
*
* @throws NoSuchAlgorithmException
*/
private static void generateKeyPair() throws NoSuchAlgorithmException {
// create SecureRandom object used to generate key pairs
secureRandom = Instance(SHA1PRNG);
/
/ initialise generator
generator = Instance(RSA);
generator.initialize(1024, secureRandom);
// generate keypair using generator
keyPair = ateKeyPair();
// asssign private and public keys
Private());
Public());
}
/**
* 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;
}
这是可能的还是加密必须共享和使⽤相同的密钥?
主要⽬的是这个.
我将有两个客户端可以相互发送和接收加密数据.
对于客户A来接收加密数据:
java加密方式有哪些
客户端B请求客户A的公钥.
客户端B加密字符串并将其发送给客户端A.
客户端A接收此加密的字符串,然后使⽤⾃⼰的私钥对其进⾏解密.
反之亦然,如果客户B希望接收加密数据.
解决⽅法:
RSA加密只能⽤于加密⼩于密钥模数的数据.即2048位RSA公钥只能加密256字节的数据.填充字节需要⼀些这样的数据,因此通常会留下更少的空间来播放.
通常,这通过混合加密⽅案来解决.也就是说,数据本⾝是使⽤临时对称会话密钥加密的,然后会话密钥使⽤收件⼈的公钥加密.加密数据和加密会话密钥都被发送给收件⼈.
您可能希望考虑类似OpenPGP的东西,它实现了这种⾏为(以及更多). BouncyCastle是⼀个针对Java的OpenPGP实现.
标签:java,encryption,cryptography,key-pair

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。