导航:首页 > 编程语言 > 私钥加密公钥Java

私钥加密公钥Java

发布时间:2025-07-23 01:13:02

Ⅰ https是如何工作的

加密(Cipher)

java 1.2时,引入JCR(java 加密扩展)系统,用来负责java中的密钥和证书。

我们都知道,如果我们想要加密或解密一些信息,我们必须要有一个密钥。这好比你想要开门或者锁门,必须要有钥匙一样。

在java中,密钥由KeyGenerator或KeyPairGenerator生成。前者用来生成对称密钥,后者用来生成非对称密钥。

上面这张图片已经清楚的展示了HTTPS工作的流程。

1.[Server]生成一对密钥:公钥和私钥,我们称之为“KeyPub”,“KeyPri”
2.[Server]服务端将公钥(KeyPub)发送到客户端
3.[Client]生成一个对称密钥(姑且称之为key2),然后用key2加密数据。
4.[Client]使用公钥(KeyPub)加密key2.这时,key2是安全的,因为只有服务度有私钥KeyPri
5.[Client]发送用key2加密后的信息及用KeyPub加密过的key2到服务端
6.[Server]服务端使用KeyPri解密得到加密过的key2,得到真正的key2
7.[Server]使用key2解密消息正文。这样,数据就被安全的传输到了服务端。

结论

由于对称加密比非对称加密快,https决定使用对称加密来加密数据,使用非对称加密对称加密生成的密钥,以确保安全

Ⅱ Java生成RSA非对称型加密的公钥和私钥

非对称型加密非常适合多个客户端和服务器之间的秘密通讯 客户端使用同一个公钥将明文加密 而这个公钥不能逆向的解密 密文发送到服务器后有服务器端用私钥解密 这样就做到了明文的加密传送

非对称型加密也有它先天的缺点 加密 解密速度慢制约了它的发挥 如果你有大量的文字需要加密传送 建议你通过非对称型加密来把对称型 密钥 分发到客户端 及时更新对称型 密钥

import java io *;

import java security *;

import javax crypto *;

import javax crypto spec *;

/**

* <p>Title: RSA非对称型加密的公钥和私钥</p>

* <p>Description: </p>

* <p>Copyright: Copyright (c) </p>

* <p>Company: </p>

* @author not attributable

* @version

*/

public class KeyRSA {

private KeyPairGenerator kpg = null;

private KeyPair kp = null;

private PublicKey public_key = null;

private PrivateKey private_key = null;

private FileOutputStream public_file_out = null;

private ObjectOutputStream public_object_out = null;

private FileOutputStream private_file_out = null;

private ObjectOutputStream private_object_out = null;

/**

* 构造函数

* @param in 指定密匙长度(取值范围 ~ )

* @throws NoSuchAlgorithmException 异常

*/

public KeyRSA(int in String address) throws NoSuchAlgorithmException FileNotFoundException IOException

{

kpg = KeyPairGenerator getInstance( RSA ); //创建 密匙对 生成器

kpg initialize(in); //指定密匙长度(取值范围 ~ )

kp = kpg genKeyPair(); //生成 密匙对 其中包含着一个公匙和一个私匙的信息

public_key = kp getPublic(); //获得公匙

private_key = kp getPrivate(); //获得私匙

//保存公匙

public_file_out = new FileOutputStream(address + /public_key dat );

public_object_out = new ObjectOutputStream(public_file_out);

public_object_out writeObject(public_key);

//保存私匙

private_file_out = new FileOutputStream(address + /private_key dat );

private_object_out = new ObjectOutputStream(private_file_out);

private_object_out writeObject(private_key);

}

public static void main(String[] args) {

try {

System out println( 私匙和公匙保存到C盘下的文件中 );

new KeyRSA( c:/ );

}

catch (IOException ex) {

}

catch (NoSuchAlgorithmException ex) {

}

}

lishixin/Article/program/Java/hx/201311/26592

Ⅲ java 中的Cipher类RSA方式能不能用私钥加密公钥解密,完整解释下

KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
keyGen.initialize(1024);
KeyPair key = keyGen.generateKeyPair();

Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
//把第二个参数改为 key.getPrivate()
cipher.init(Cipher.ENCRYPT_MODE, key.getPublic());
byte[] cipherText = cipher.doFinal("Message".getBytes("UTF8"));
System.out.println(new String(cipherText, "UTF8"));
//把第二个参数改为key.getPublic()
cipher.init(Cipher.DECRYPT_MODE, key.getPrivate());
byte[] newPlainText = cipher.doFinal(cipherText);
System.out.println(new String(newPlainText, "UTF8"));

正常的用公钥加密私钥解密就是这个过程,如果按私钥加密公钥解密,只要按备注改2个参数就可以。

但是我要提醒楼主,你要公钥解密,公钥是公开的,相当于任何人都查到公钥可以解密。
你是想做签名是吧。

Ⅳ JAVA写RSA加密,公钥私钥都是一样的,为什么每次加密的结果不一样

有可能是当前的环境字符编码不一样,例如加密一边用的是GBK,解密那边用的是UTF-8编码,所以结果就会不同步。

Ⅳ JAVA写RSA加密,公钥私钥都是一样的,为什么每次加密的结果不一样

因为rsa是非对称加密,它使用的是随机大素数的抽取,每次随机生成的,所以每次加密的结果不可能一样

阅读全文

与私钥加密公钥Java相关的资料

热点内容
妻友app苹果怎么下载 浏览:141
win10系统如何远程桌面连接到服务器 浏览:277
编译原理张晶是哪的人 浏览:271
资深程序员怎么做 浏览:401
程序员那么可爱三年前发生了什么 浏览:243
跑腿app源码上传 浏览:264
html5简单小游戏源码 浏览:18
在转转app怎么领福利 浏览:354
app的双重认证怎么解除 浏览:220
加密货币价格动荡的6个原因 浏览:178
站内搜索引擎源码 浏览:405
sqlite常用命令 浏览:102
算法导论第三版pdf中文 浏览:968
服务器如何分成多台的软件 浏览:776
如何让安卓手机有一闪一闪的 浏览:468
把文件夹伪装成硬盘 浏览:694
怎么加密ip连接 浏览:10
python蟒蛇编码翻译 浏览:473
校园跑腿服务网站源码 浏览:520
光遇安卓如何拍出好看的素材 浏览:475