对称加密demo

package com;

import   javax.crypto.Cipher;   

import   javax.crypto.KeyGenerator;     

import   javax.crypto.SecretKey;   

 

 

public class DES {

 

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

try{

 KeyGenerator   kg   =   KeyGenerator.getInstance("DESede");   //获取密匙生成器    

 SecretKey   key   =   kg.generateKey();   //生成密匙,可用多种方法来保存密匙   

 Cipher   cp   =   Cipher.getInstance("DESede");   //创建密码器   

 cp.init(Cipher.ENCRYPT_MODE,   key);   //初始化 第一个参数:为1时为加密,为2时为解密  

 String   str   =   "DESede对称密码体系";   

 byte   []   ptext   =   str.getBytes("GBK");   

 byte   []   ctext   =   cp.doFinal(ptext);//加密 

 System.out.println("密钥是:"+new String(key.getEncoded(),"GBK"));

 System.out.println("密文是:"+new String(ctext,"GBK"));

 cp.init(Cipher.DECRYPT_MODE,   key); //初始化 第一个参数:为1时为加密,为2时为解密

 byte   []   mtext   =   cp.doFinal(ctext);   //解密   

   

 String   result   =   new   String(mtext,   "GBK");   

 

 System.out.println("明文是:"+result);

}catch(Exception e){

e.printStackTrace();

}

}

 

}








package com;

import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;

import javax.crypto.Cipher;

public class RSA {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub

try{
KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA"); //创建‘密匙对’生成器

KeyPair kp = kpg.genKeyPair();
PublicKey public_key = kp.getPublic(); //获得公匙
PrivateKey private_key = kp.getPrivate(); //获得私匙
 Cipher   cp   =   Cipher.getInstance("RSA");   //创建密码器   
 cp.init(Cipher.ENCRYPT_MODE,   public_key);   //初始化 第一个参数:为1时为加密,为2时为解密   
 String   str   =   "RSA非对称密码体系";   
 byte   []   ptext   =   str.getBytes("GBK");   
 byte   []   ctext   =   cp.doFinal(ptext); //加密

 cp.init(Cipher.DECRYPT_MODE,   private_key); //初始化 第一个参数:为1时为加密,为2时为解密  
 byte   []   mtext   =   cp.doFinal(ctext);   //解密  
 System.out.println("公钥是:"+new String(public_key.getEncoded(),"GBK"));
 System.out.println("私钥是:"+new String(private_key.getEncoded(),"GBK"));
 System.out.println("秘文是:"+new String(ctext,"GBK"));
 String   result   =   new   String(mtext,   "GBK");   
 
 System.out.println("明文是:"+result);
}catch(Exception e){
e.printStackTrace();
}
}

}

以下是一个基于RSA算法的Java对称加密示例代码: ``` import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.PrivateKey; import java.security.PublicKey; import java.security.SecureRandom; import java.util.Base64; import javax.crypto.Cipher; public class RSAEncryptionDemo { private static final String ALGORITHM = "RSA"; private static final int KEY_SIZE = 2048; public static void main(String[] args) throws Exception { String plainText = "Hello, World!"; KeyPair keyPair = generateKeyPair(); PublicKey publicKey = keyPair.getPublic(); PrivateKey privateKey = keyPair.getPrivate(); String encryptedText = encrypt(plainText, publicKey); String decryptedText = decrypt(encryptedText, privateKey); System.out.println("Original Text: " + plainText); System.out.println("Encrypted Text: " + encryptedText); System.out.println("Decrypted Text: " + decryptedText); } private static KeyPair generateKeyPair() throws Exception { KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(ALGORITHM); SecureRandom secureRandom = new SecureRandom(); keyPairGenerator.initialize(KEY_SIZE, secureRandom); return keyPairGenerator.generateKeyPair(); } private static String encrypt(String plainText, PublicKey publicKey) throws Exception { Cipher cipher = Cipher.getInstance(ALGORITHM); cipher.init(Cipher.ENCRYPT_MODE, publicKey); byte[] encryptedBytes = cipher.doFinal(plainText.getBytes()); return Base64.getEncoder().encodeToString(encryptedBytes); } private static String decrypt(String encryptedText, PrivateKey privateKey) throws Exception { Cipher cipher = Cipher.getInstance(ALGORITHM); cipher.init(Cipher.DECRYPT_MODE, privateKey); byte[] encryptedBytes = Base64.getDecoder().decode(encryptedText); byte[] decryptedBytes = cipher.doFinal(encryptedBytes); return new String(decryptedBytes); } } ``` 该代码首先生成一个密钥对,然后使用公钥对数据进行加密,再使用私钥对加密后的数据进行解密。注意,在实际应用中,公钥和私钥应该分别保存在不同的地方,并且应该使用更安全的密钥长度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王小工

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值