私钥加密


public static void PrivEncrypt(String oldStr) throws Exception {
byte[] plainText = oldStr.getBytes("UTF8");
// 获得一个私鈅加密类Cipher,ECB是加密方式,PKCS5Padding是填充方法
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
SecretKeySpec key = new SecretKeySpec("1234567812345678".getBytes(), "AES");
cipher.init(Cipher.ENCRYPT_MODE, key);// 使用私鈅加密
byte[] cipherText = cipher.doFinal(plainText);
System.out.println("加密:"+new String(cipherText, "UTF8"));

cipher.init(Cipher.DECRYPT_MODE, key);// 使用私钥解密
byte[] newPlainText = cipher.doFinal(cipherText);
System.out.println("解密:"+new String(newPlainText, "UTF8"));
}
### 公钥加密私钥加密的区别及使用场景 公钥加密私钥加密是现代密码学中的两种核心加密方式,它们在原理、实现方式以及实际应用场景上存在显著差异。以下是两者的具体区别和使用场景。 #### 1. 基本概念 - **公钥加密**:也称为非对称加密,使用一对密钥(公钥和私钥)进行加密和解密操作。公钥可以公开分发给任何人,而私钥必须严格保密[^1]。 - **私钥加密**:也称为对称加密,使用同一个密钥进行加密和解密操作。该密钥需要在通信双方之间安全传递,并且不能被第三方获取[^2]。 #### 2. 加密解密过程 - **公钥加密**: - 加密时,使用接收方的公钥对数据进行加密。 - 解密时,使用接收方的私钥对数据进行解密。 - 这种机制确保只有持有私钥的一方才能解密数据。 - **私钥加密**: - 加密和解密都使用相同的密钥。 - 只要通信双方共享了密钥,就可以互相加密和解密数据。 #### 3. 安全性 - **公钥加密**:由于公钥和私钥是成对生成的,即使公钥被公开,也无法通过它推导出私钥。因此,公钥加密的安全性较高,尤其是在需要保护数据传输的过程中[^2]。 - **私钥加密**:安全性依赖于密钥的保密性。一旦密钥泄露,所有加密的数据都会变得不安全。因此,在密钥分发过程中需要特别注意安全性[^2]。 #### 4. 性能 - **公钥加密**:由于涉及复杂的数学运算(如大数分解或离散对数问题),公钥加密的速度较慢,通常用于小数据量的加密或密钥交换。 - **私钥加密**:算法相对简单,计算速度快,适合处理大数据量的加密需求[^2]。 #### 5. 使用场景 - **公钥加密**: - 数据传输:例如在互联网通信中,使用公钥加密技术(如RSA)来保护敏感信息,如信用卡号或登录凭据[^3]。 - 数字签名:通过私钥生成数字签名,然后用公钥验证签名的真实性,确保消息的完整性和来源可信度。 - **私钥加密**: - 文件加密:对本地文件进行加密保护,防止未经授权的访问。 - 网络通信:在已建立安全通道的情况下,使用私钥加密技术(如AES)来加速数据传输的加密解密过程[^2]。 ```python # 示例代码:使用RSA进行公钥加密私钥解密 from Crypto.PublicKey import RSA from Crypto.Cipher import PKCS1_OAEP import base64 # 生成密钥对 key = RSA.generate(2048) private_key = key.export_key() public_key = key.publickey().export_key() # 加密数据 message = "Hello, World!" cipher_rsa = PKCS1_OAEP.new(RSA.import_key(public_key)) encrypted_message = cipher_rsa.encrypt(message.encode()) encoded_encrypted_message = base64.b64encode(encrypted_message) # 解密数据 decoded_encrypted_message = base64.b64decode(encoded_encrypted_message) cipher_rsa = PKCS1_OAEP.new(RSA.import_key(private_key)) decrypted_message = cipher_rsa.decrypt(decoded_encrypted_message) print(f"Original Message: {message}") print(f"Encrypted Message: {encoded_encrypted_message.decode()}") print(f"Decrypted Message: {decrypted_message.decode()}") ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值