package com.amuro.strategy.base64;
import java.util.Base64;
import com.amuro.strategy.IStrategy;
/**
* Base64算法基于64个基本字符,加密后的string中只包含这64个字符
* @author Amuro
*
*/
public class Base64Strategy implements IStrategy
{
public String encode(String src)
{
byte[] encodeBytes = Base64.getEncoder().encode(src.getBytes());
return new String(encodeBytes);
}
public String decode(String src)
{
byte[] decodeBytes = Base64.getDecoder().decode(src.getBytes());
return new String(decodeBytes);
}
}
package com.amuro.strategy.message_digest;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import org.apache.commons.codec.binary.Hex;
import com.amuro.strategy.IStrategy;
/**
* 消息摘要算法
* @author Amuro
*
*/
public class MD5Strategy implements IStrategy
{
public String encode(String src)
{
try
{
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] encodeBytes = md.digest(src.getBytes());
return Hex.encodeHexString(encodeBytes);
}
catch (NoSuchAlgorithmException e)
{
e.printStackTrace();
}
return null;
}
public String decode(String src)
{
throw new RuntimeException("MD5 no decode");
}
}
package com.amuro.strategy.message_digest;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import org.apache.commons.codec.binary.Hex;
import com.amuro.strategy.IStrategy;
/**
* 安全散列算法
* @author Amuro
*
*/
public class SHAStrategy implements IStrategy
{
public String encode(String src)
{
try
{
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(src.getBytes());
return Hex.encodeHexString(md.digest());
}
catch (NoSuchAlgorithmException e)
{
e.printStackTrace();
}
return null;
}
public String decode(String src)
{
throw new RuntimeException("SHA no decode");
}
}
package com.amuro.strategy.des;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
import org.apache.commons.codec.binary.Hex;
import com.amuro.strategy.IStrategy;
/**
*
* @author Amuro
*
*/
public class DESStrategy implements IStrategy
{
private Cipher cipher;
private SecretKey generateKey;
public String encode(String src)
{
try
{
KeyGenerator keyGenerator = KeyGenerator.getInstance("DES");
keyGenerator.init(56);//size
SecretKey secretKey = keyGenerator.generateKey();
byte[] keyBytes = secretKey.getEncoded();
DESKeySpec desKeySpec = new DESKeySpec(keyBytes);
SecretKeyFactory secretKeyFactory = SecretKeyFactory.getInstance("DES");
generateKey = secretKeyFactory.generateSecret(desKeySpec);
cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, generateKey);
byte[] resultBytes = cipher.doFinal(src.getBytes());
return Hex.encodeHexString(resultBytes);
}
catch (Exception e)
{
e.printStackTrace();
}
return null;
}
public String decode(String src)
{
try
{
cipher.init(Cipher.DECRYPT_MODE, generateKey);
byte[] result = Hex.decodeHex(src.toCharArray());
return new String(cipher.doFinal(result));
}
catch(Exception e)
{
e.printStackTrace();
}
return null;
}
}
package com.amuro.strategy.des;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESedeKeySpec;
import org.apache.commons.codec.binary.Hex;
import com.amuro.strategy.IStrategy;
public class _3DESStrategy implements IStrategy
{
private Cipher cipher;
private SecretKey generateKey;
public String encode(String src)
{
try
{
KeyGenerator keyGenerator = KeyGenerator.getInstance("DESede");
keyGenerator.init(168);//size
SecretKey secretKey = keyGenerator.generateKey();
byte[] keyBytes = secretKey.getEncoded();
DESedeKeySpec desKeySpec = new DESedeKeySpec(keyBytes);
SecretKeyFactory secretKeyFactory = SecretKeyFactory.getInstance("DESede");
generateKey = secretKeyFactory.generateSecret(desKeySpec);
cipher = Cipher.getInstance("DESede/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, generateKey);
byte[] resultBytes = cipher.doFinal(src.getBytes());
return Hex.encodeHexString(resultBytes);
}
catch (Exception e)
{
e.printStackTrace();
}
return null;
}
public String decode(String src)
{
try
{
cipher.init(Cipher.DECRYPT_MODE, generateKey);
byte[] result = Hex.decodeHex(src.toCharArray());
return new String(cipher.doFinal(result));
}
catch(Exception e)
{
e.printStackTrace();
}
return null;
}
}
package com.amuro.strategy.des;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Hex;
import com.amuro.strategy.IStrategy;
public class AESStrategy implements IStrategy
{
private Cipher cipher;
private SecretKey generateKey;
public String encode(String src)
{
try
{
KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
keyGenerator.init(128);//size
SecretKey secretKey = keyGenerator.generateKey();
byte[] keyBytes = secretKey.getEncoded();
generateKey = new SecretKeySpec(keyBytes, "AES");
cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, generateKey);
byte[] resultBytes = cipher.doFinal(src.getBytes());
return Hex.encodeHexString(resultBytes);
}
catch (Exception e)
{
e.printStackTrace();
}
return null;
}
public String decode(String src)
{
try
{
cipher.init(Cipher.DECRYPT_MODE, generateKey);
byte[] result = Hex.decodeHex(src.toCharArray());
return new String(cipher.doFinal(result));
}
catch(Exception e)
{
e.printStackTrace();
}
return null;
}
}
package com.amuro.strategy.pbe;
import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.PBEKeySpec;
import javax.crypto.spec.PBEParameterSpec;
import org.apache.commons.codec.binary.Hex;
import com.amuro.strategy.IStrategy;
/**
* 基于口令的加密(password),对称 + 消息摘要
* @author Amuro
*
*/
public class PBEStrategy implements IStrategy
{
private Cipher cipher;
private SecretKey generateKey;
private PBEParameterSpec pbeParameterSpec;
public String encode(String src)
{
try
{
SecureRandom secureRandom = new SecureRandom();
byte[] salt = secureRandom.generateSeed(8);
String password = "amuro";
PBEKeySpec pbeKeySpec = new PBEKeySpec(password.toCharArray());
SecretKeyFactory secretKeyFactory = SecretKeyFactory.getInstance("PBEWITHMD5andDES");
generateKey = secretKeyFactory.generateSecret(pbeKeySpec);
pbeParameterSpec = new PBEParameterSpec(salt, 100);
cipher = Cipher.getInstance("PBEWITHMD5andDES");
cipher.init(Cipher.ENCRYPT_MODE, generateKey, pbeParameterSpec);
byte[] resultBytes = cipher.doFinal(src.getBytes());
return Hex.encodeHexString(resultBytes);
}
catch(Exception e)
{
e.printStackTrace();
}
return null;
}
public String decode(String src)
{
try
{
cipher.init(Cipher.DECRYPT_MODE, generateKey, pbeParameterSpec);
byte[] result = Hex.decodeHex(src.toCharArray());
return new String(cipher.doFinal(result));
}
catch(Exception e)
{
e.printStackTrace();
}
return null;
}
}
package com.amuro.strategy.asymmetric;
import java.security.KeyFactory;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
import javax.crypto.Cipher;
import org.apache.commons.codec.binary.Hex;
import com.amuro.strategy.IStrategy;
public class RSAStrategy implements IStrategy
{
private RSAPublicKey rsaPublicKey;
private RSAPrivateKey rsaPrivateKey;
public String encode(String src)
{
try
{
//初始化密钥
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
keyPairGenerator.initialize(512);
KeyPair keyPair = keyPairGenerator.generateKeyPair();
rsaPublicKey = (RSAPublicKey)keyPair.getPublic();
rsaPrivateKey = (RSAPrivateKey)keyPair.getPrivate();
//私钥加密 公钥解密
PKCS8EncodedKeySpec pkcs8EncodedKeySpec
= new PKCS8EncodedKeySpec(rsaPrivateKey.getEncoded());
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PrivateKey privateKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec);
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, privateKey);
byte[] resultBytes = cipher.doFinal(src.getBytes());
//私钥解密 公钥加密
// X509EncodedKeySpec x509EncodedKeySpec =
// new X509EncodedKeySpec(rsaPublicKey.getEncoded());
// KeyFactory keyFactory = KeyFactory.getInstance("RSA");
// PublicKey publicKey = keyFactory.generatePublic(x509EncodedKeySpec);
// Cipher cipher = Cipher.getInstance("RSA");
// cipher.init(Cipher.ENCRYPT_MODE, publicKey);
// byte[] resultBytes = cipher.doFinal(src.getBytes());
return Hex.encodeHexString(resultBytes);
}
catch(Exception e)
{
e.printStackTrace();
}
return null;
}
public String decode(String src)
{
try
{
//私钥加密 公钥解密
X509EncodedKeySpec x509EncodedKeySpec =
new X509EncodedKeySpec(rsaPublicKey.getEncoded());
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PublicKey publicKey = keyFactory.generatePublic(x509EncodedKeySpec);
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.DECRYPT_MODE, publicKey);
byte[] resultBytes = cipher.doFinal(Hex.decodeHex(src.toCharArray()));
//私钥解密 公钥加密
// PKCS8EncodedKeySpec pkcs8EncodedKeySpec
// = new PKCS8EncodedKeySpec(rsaPrivateKey.getEncoded());
// KeyFactory keyFactory = KeyFactory.getInstance("RSA");
// PrivateKey privateKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec);
// Cipher cipher = Cipher.getInstance("RSA");
// cipher.init(Cipher.DECRYPT_MODE, privateKey);
// byte[] resultBytes = cipher.doFinal(Hex.decodeHex(src.toCharArray()));
return new String(resultBytes);
}
catch(Exception e)
{
e.printStackTrace();
}
return null;
}
}
package com.amuro.strategy.asymmetric;
import java.security.KeyFactory;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.spec.X509EncodedKeySpec;
import java.util.Objects;
import javax.crypto.Cipher;
import javax.crypto.KeyAgreement;
import javax.crypto.SecretKey;
import javax.crypto.interfaces.DHPublicKey;
import javax.crypto.spec.DHParameterSpec;
import org.apache.commons.codec.binary.Hex;
import com.amuro.strategy.IStrategy;
public class DHStrategy implements IStrategy
{
private Cipher cipher;
private SecretKey receiverSecretKey;
public String encode(String src)
{
try
{
//初始化发送方密钥
KeyPairGenerator senderKeyPairGenerator = KeyPairGenerator.getInstance("DH");
senderKeyPairGenerator.initialize(512);
KeyPair senderkeyPair = senderKeyPairGenerator.generateKeyPair();
PrivateKey senderPrivateKey = senderkeyPair.getPrivate();
byte[] senderPublicKeyBytes = senderkeyPair.getPublic().getEncoded();//发送方的公钥
//初始化接收方密钥,用发送方的公钥
KeyFactory receiverKeyFactory = KeyFactory.getInstance("DH");
X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(senderPublicKeyBytes);
PublicKey receiverPublicKey = receiverKeyFactory.generatePublic(x509EncodedKeySpec);
DHParameterSpec dhParameterSpec =
((DHPublicKey)receiverPublicKey).getParams();
KeyPairGenerator receiverKeyPairGenerator = KeyPairGenerator.getInstance("DH");
receiverKeyPairGenerator.initialize(dhParameterSpec);
KeyPair receiverKeyPair = receiverKeyPairGenerator.generateKeyPair();
PrivateKey receiverPrivateKey = receiverKeyPair.getPrivate();
byte[] receiverPublicKeyBytes = receiverKeyPair.getPublic().getEncoded();
KeyAgreement receiverKeyAgreement = KeyAgreement.getInstance("DH");
receiverKeyAgreement.init(receiverPrivateKey);
receiverKeyAgreement.doPhase(receiverPublicKey, true);
receiverSecretKey = receiverKeyAgreement.generateSecret("DES");
//发送方拿到接收方的public key就可以做加密了
KeyFactory senderKeyFactory = KeyFactory.getInstance("DH");
x509EncodedKeySpec = new X509EncodedKeySpec(receiverPublicKeyBytes);
PublicKey senderPublicKey = senderKeyFactory.generatePublic(x509EncodedKeySpec);
KeyAgreement senderKeyAgreement = KeyAgreement.getInstance("DH");
senderKeyAgreement.init(senderPrivateKey);
senderKeyAgreement.doPhase(senderPublicKey, true);
SecretKey senderSecretKey = senderKeyAgreement.generateSecret("DES");
if(Objects.equals(receiverSecretKey, senderSecretKey))
{
cipher = Cipher.getInstance("DES");
cipher.init(Cipher.ENCRYPT_MODE, senderSecretKey);
byte[] result = cipher.doFinal(src.getBytes());
return Hex.encodeHexString(result);
}
}
catch(Exception e)
{
e.printStackTrace();
}
return null;
}
public String decode(String src)
{
try
{
cipher.init(Cipher.DECRYPT_MODE, receiverSecretKey);
byte[] result = Hex.decodeHex(src.toCharArray());
return new String(cipher.doFinal(result));
}
catch(Exception e)
{
e.printStackTrace();
}
return null;
}
}
package com.amuro.strategy.signature;
import java.security.KeyFactory;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.Signature;
import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
public class RSASign
{
public static boolean verifySign(String src)
{
try
{
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
keyPairGenerator.initialize(512);
KeyPair keyPair = keyPairGenerator.generateKeyPair();
PublicKey rsaPublicKey = (RSAPublicKey)keyPair.getPublic();
PrivateKey rsaPrivateKey = (RSAPrivateKey)keyPair.getPrivate();
PKCS8EncodedKeySpec pkcs8EncodedKeySpec
= new PKCS8EncodedKeySpec(rsaPrivateKey.getEncoded());
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PrivateKey privateKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec);
Signature signature = Signature.getInstance("MD5withRSA");
signature.initSign(privateKey);
signature.update(src.getBytes());
//生成签名bytes
byte[] signBytes = signature.sign();
X509EncodedKeySpec x509EncodedKeySpec =
new X509EncodedKeySpec(rsaPublicKey.getEncoded());
keyFactory = KeyFactory.getInstance("RSA");
PublicKey publicKey = keyFactory.generatePublic(x509EncodedKeySpec);
signature = Signature.getInstance("MD5withRSA");
signature.initVerify(publicKey);
signature.update(src.getBytes());
boolean isVerified = signature.verify(signBytes);
return isVerified;
}
catch(Exception e)
{
e.printStackTrace();
}
return false;
}
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有