现在想使用RSA+AES加密技术来进行加密解密求懂的大神来看看~~~~
在网上找到一个范例:
先说下文字描述:
一,A先生成一个对称秘钥,这个秘钥可以是随机生成的,
二,A用B的公钥加密第一步生成的这个对称秘钥
三,A把加密过的对称秘钥发给B
四,A用第一步生成的这个对称秘钥加密实际要发的消息
五,A把用对称秘钥加密的消息发给B
对于B
他先收到A发来的对称秘钥,这个秘钥是用B的公钥加密过的,所以B需要用自己的私钥来解密这个秘钥
然后B又收到A发来的密文,这时候用刚才解密出来的秘钥来解密密文
代码:
我想先问下这里面有用到RES吗?(新人不太懂求解~)然后我有点看不太懂。
我看他的步骤是:先生成秘钥对。那我main应该先调用的就是generateKeyPair方法。
求解释我到底该如调用方法呢~~我想最后需要用一个秘钥方式来解密~~现在等先感谢各位了~
先说下文字描述:
一,A先生成一个对称秘钥,这个秘钥可以是随机生成的,
二,A用B的公钥加密第一步生成的这个对称秘钥
三,A把加密过的对称秘钥发给B
四,A用第一步生成的这个对称秘钥加密实际要发的消息
五,A把用对称秘钥加密的消息发给B
对于B
他先收到A发来的对称秘钥,这个秘钥是用B的公钥加密过的,所以B需要用自己的私钥来解密这个秘钥
然后B又收到A发来的密文,这时候用刚才解密出来的秘钥来解密密文
代码:
public class RSA {
public static final int KEYSIZE = 512;
private KeyPair keyPair;
private Key publicKey;
private Key privateKey;
/**
* 生成秘钥对
* @return
* @throws NoSuchAlgorithmException
*/
public KeyPair generateKeyPair() throws NoSuchAlgorithmException {
KeyPairGenerator pairgen = KeyPairGenerator.getInstance("RSA");
SecureRandom random = new SecureRandom();
pairgen.initialize(RSA.KEYSIZE, random);
this.keyPair = pairgen.generateKeyPair();
return this.keyPair;
}
/**
* 加密秘钥
* @param key
* @return
* @throws NoSuchAlgorithmException
* @throws NoSuchPaddingException
* @throws InvalidKeyException
* @throws IllegalBlockSizeException
*/
public byte[] wrapKey(Key key) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException {
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.WRAP_MODE, this.privateKey);
byte[] wrappedKey = cipher.wrap(key);
return wrappedKey;
}
/**
* 解密秘钥
* @param wrapedKeyBytes
* @return
* @throws NoSuchAlgorithmException
* @throws NoSuchPaddingException
* @throws InvalidKeyException
*/
public Key unwrapKey(byte[] wrapedKeyBytes) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException {
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.UNWRAP_MODE, this.publicKey);
Key key = cipher.unwrap(wrapedKeyBytes, "AES", Cipher.SECRET_KEY);
return key;
}
public Key getPublicKey() {
return publicKey;
}
public void setPublicKey(Key publicKey) {
this.publicKey = publicKey;
}
public Key getPrivateKey() {
return privateKey;
}
public void setPrivateKey(Key privateKey) {
this.privateKey = privateKey;
}
}
我想先问下这里面有用到RES吗?(新人不太懂求解~)然后我有点看不太懂。
我看他的步骤是:先生成秘钥对。那我main应该先调用的就是generateKeyPair方法。
求解释我到底该如调用方法呢~~我想最后需要用一个秘钥方式来解密~~现在等先感谢各位了~
...全文
相关推荐
AES+RSA加密解密(js和java互通)
rsa aes 加解密 js java 前后端互通
OpenSSL RSA与AES加密技术详解
OpenSSL 是一个开放源代码的软件库,用于实现SSL和TLS协议,支持包括加密、解密、数字签名和密钥交换在内的多种密码学功能。该库不仅用于安全通信协议的实现,如HTTPS、SMTPS、FTPS等,还广泛应用于安全验证、信息保护等场景。OpenSSL 库以C语言编写,可以方便地嵌入到应用程序中,从而提供安全功能,保证数据传输和存储的安全性。本章将对OpenSSL库的架构、功能模块以及其在现代信息安全领域的重要性进行概述。OpenSSL命令行工具分为多个子命令,包括opensslc_rehash。
RSA+AES加解密
采用混合加密,两种入参形式选择,第一种,采用实体对象入参,第二种自定义参数解析器来进行入参,demo两种包含,自己参考相应的代码,两者有相同,也有不相同的地方,参考我的文章即可!!!
OpenSSL RSA AES加密解密C++源码
OpenSSL RSA AES加密解密C++源码
Python3.7 基于 pycryptodome 的AES加密解密、RSA加密解密、加签验签
主要介绍了Python3.7 基于 pycryptodome 的AES加密解密、RSA加密解密、加签验签,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下


Web 开发
